给出一个字符串如何在JavaScript中第一次出现多个子字符串时分割字符串?
s1 = "abcfoodefbarghi"
和
s2 = "abcbardefooghi"
我如何分割S1为 “ABC” 和 “defbarghi” 和S2为 “ABC” 和 “defooghi” 即:拆分字符串在第一次出现任何一个字符串“foo”或“bar”时分成两部分
我想这可以用s.split(/regexp/)
来完成,但是这个正则表达式应该是什么?
给出一个字符串如何在JavaScript中第一次出现多个子字符串时分割字符串?
s1 = "abcfoodefbarghi"
和
s2 = "abcbardefooghi"
我如何分割S1为 “ABC” 和 “defbarghi” 和S2为 “ABC” 和 “defooghi” 即:拆分字符串在第一次出现任何一个字符串“foo”或“bar”时分成两部分
我想这可以用s.split(/regexp/)
来完成,但是这个正则表达式应该是什么?
使用正则表达式这样:
var match = s1.match(/^([\S\s]*?)(?:foo|bar)([\S\s]*)$/);
/* If foo or bar is found:
match[1] contains the first part
match[2] contains the second part */
解释稀土:
[\S\s]*?
仅匹配足够的字符的RE,这是(foo|bar)
的下一个部分匹配“foo”或“bar”[\S\s]*
匹配其余字符围绕一部分RE的括号会创建一个组,以便可以引用分组的匹配,而(?:)
会创建一个不可引用的组。
这工作,并很好的解释。最后,我需要匹配**最后一次**出现并得到分割字符串,所以我做了/ ^([\ S \ s] *)(foo | bar)([\ S \ s] *? )$ /'。谢谢。 –
str.replace(/foo|bar/,"\x034").split("\x034")
想法是用一个特殊的(不可见的)字符串替换第一个匹配项,然后对这个字符串进行拆分。
看这个问题: [分割字符串一次在javascript](http://stackoverflow.com/questions/2878703/split-string-once-in-javascript) –