2012-01-11 138 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

相关问题