获取子串直到第n个匹配正则表达式

时间:2012-01-11 05:15:59

标签: javascript regex

假设我有字符串:

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

我可以使用什么常规表达式来获取子字符串直到第二个;

换句话说,我想最终得到子串"Hello world; some random text;"

或者我想要获得子串直到3;因此结束:

"Hello world; some random text; foo;"

4 个答案:

答案 0 :(得分: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;

答案 1 :(得分:2)

如果您不必使用Regex,可以使用Split()方法和分号分隔符:

http://www.w3schools.com/jsref/jsref_split.asp

答案 2 :(得分: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的想法,我不记得你可以传递第二个参数来分裂。

答案 3 :(得分:1)

为什么正则表达式?

以简单的方式做到

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

reference