2012-01-11 122 views
1

比方說,我有字符串:得到子,直到第n個匹配的正則表達式

"Hello world; some random text; foo; bla bla; " 

我會爲了得到一個子,直到第二;使用什麼正規表示法。

換句話說,我會喜歡與子"Hello world; some random text;"

也許我想要得到的字符串,直到3TH結束了;因此結束於:

"Hello world; some random text; foo;" 

回答

4

試試這個。應該工作得很好。

/([\w\s]+?\;){2}/ 

使用方法如下:

var str = "Hello world; some random text; foo; bla bla; "; 
var match = str.match(/([^;]*;){2}/)[0]; 
alert(match); // Hello world; some random text; 
+2

很可能甚至簡化爲'/([^]){2} /'。 – henko 2012-01-11 05:25:19

+0

我不知道該怎麼稱呼它。請張貼使用此Reg Reg所需的全部代碼。 – 2012-01-11 05:25:56

+0

'VAR STR = 「你好世界;一些隨機文本; FOO;血乳酸血乳酸;」;'' 變種匹配= str.match(/([\ W \ S] + \;){2} /)[0 ];' – 2012-01-11 05:32:27

1

我不認爲這是使用RegExps最好解決的問題。用直線JS很容易做到這一點。 http://jsfiddle.net/mendesjuan/xvM53/1/

var str = "Hello world; some random text; foo; bla bla; "; 
function getParts(str, delimiter, partCount) { 
    return str.split(delimiter,partCount).join(";"); 
} 

信貸,這是由於:我無恥地使用diEcho的想法,我不記得,你可以通過拆分第二個參數。

+0

真的很挑剔,最後的分號仍然缺失。 :-) – henko 2012-01-11 05:36:22

+0

@henko:是的,但現在我看到它是可行的用一個簡單的正則表達式... – 2012-01-11 05:43:38

1

爲什麼正則表達式?

做,在簡單的方式

var str = "Hello world; some random text; foo; bla bla; " 
alert(str.split(";",2).join(";")); 

reference

+0

那樣的話,分號會迷路,就不是嗎? – henko 2012-01-11 05:30:51

+0

> henko你有沒有試過。 @Juan感謝編輯 – diEcho 2012-01-11 06:01:04

+0

這仍然具有相同的錯誤正如我建議(我們有同樣的想法),它缺少最後的分號,但這是很容易解決。 – 2012-01-11 06:08:43

相關問題