2

以下正则表达式

var str = "1234,john smith,jack jone";
var match = str.match(/([^,]*,[^,]*,[^ ]*)/g);
alert(match);

返回

1234,john smith,jack

但我想要得到的是整个字符串

1234,john smith,jack jones

基本上我的脚本只为逗号之间的第一个空格完成这项工作,但我想每次逗号之间有空格时都这样做。

任何人都可以帮助我吗?

4

2 回答 2

4

您的模式从最后一部分中排除了空格,因此一旦在第三个逗号之后遇到空格,这就是匹配的结尾。你可能想试试这个:

var match = str.match(/[^,]*,[^,]*,.*/g);

这将允许第二个逗号之后的任何内容,包括空格或更多逗号(因为您的原始模式允许第二个逗号之后的逗号)。

如果您只想在单个上匹配模式,请使用开始/结束锚(^/ $)以及多行标志(m),就像我们这样:

var match = str.match(/^[^,]*,[^,]*,.*$/mg);

您可以通过这个简单的演示进行尝试。

于 2013-08-05T03:54:20.223 回答
0

为什么你不使用 split ?

"1234,john smith,jack jone".split(/,/)

或者

"1234,john smith,jack jone".split(",")
于 2013-08-05T04:24:25.600 回答