2012-04-22 125 views
2

我没有得到一个合适的正则表达式,使这样的字符串分割:拆分的第一个数字字符串OCCURENCES

72 g tocirah snaeb 101 sgge 108 g darl 111 spuc loi 32 sinihccuz 

成字符串基础上号码,如第一OCCURENCES这样:

72 g tocirah snaeb, 101 sgge, 108 g darl, 111 spuc loi, 32 sinihccuz 

我怎样才能做到这一点:

var str="72 g tocirah snaeb 101 sgge 108 g darl 111 spuc loi 32 sinihccuz"; 
var regex="/ /"; 
var result=str.match(regex); 
+0

* “立足号第一OCCURENCES” *这是什么意思是什么呢? '5 foo 4 bar 5 baz'会变成'5 foo,4 bar 5 baz'?你试过什么了?分裂很容易通过[positive lookaheads]完成(http://www.regular-expressions.info/lookaround.html)。 – 2012-04-22 14:03:03

回答

2

用途:

var result=str.replace(/ (\d+)/gm, ", $1"); 

搜索模式:搜索后跟一个或多个数字的空格字符并捕获该数字。

/(\d+)/gm 

替换:通过取代,随后捕获的数量。

, $1 

你可以在这里进行测试:http://jsfiddle.net/2FwKF/3/

+0

嗨,上面的解决方案工作很好,但是当str var是一个多行,它不工作,我想正则表达式没有考虑到换行符。请问如何解决它? – Luca 2012-04-23 15:37:38

+0

更新:在正则表达式中添加了“m”修饰符。 – jorgebg 2012-04-23 16:53:07

2

这是否合适?

var str="72 g tocirah snaeb 101 sgge 108 g darl 111 spuc loi 32 sinihccuz"; 
var regex=/\b(?=\d)/g; 

var list = str.split(regex); 

演示在http://jsfiddle.net/gaby/zT4QY/需求控制台

+1

我会说'var regex = /(?= \ d)/'这是一个更好的选择:在这种情况下全局标志是无用的,并且使用一个实际的空间不会有尾随的空白。 – ZER0 2012-04-22 14:33:31

+1

或'/ \ s *(?= \ d)/'。 – georg 2012-04-22 14:35:41

+0

这两种情况都是有效的..取决于OP试图完成什么..感谢切入 – 2012-04-22 14:53:01