2013-08-05 39 views
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

您的模式排除了最后一部分的空格,所以只要在第三个逗号后面遇到空格,就是比赛结束。你可能会想,而不是尝试:

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

这将允许第二个逗号后的任何东西,包括空格或多个逗号(,因为之后的第二你原来的模式允许逗号)。

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

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

你可以试用this simple demo

+0

还捕获组是不必要的,'match'不捕获在全球正则表达式组反正... – elclanrs

+0

@elclanrs好一点。虽然我有一种感觉OP包含了'g'标志以试图捕获字符串的最后部分。即使'g'因为整个比赛被捕获组包围而被移除,也没有必要。你可以像组队一样轻松地获得整场比赛。 –

+0

@ p.s.w.g thnx回复,请你让我知道一种方法来使这个正则表达式对新行不敏感吗?目前当我有多个条目时(多于一行),检查将它作为空间并混合所有行! – ComeRun

0

为什么你不使用拆分?

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

"1234,john smith,jack jone".split(",") 
相关问题