如何在JavaScript中多个子串中的一个子串上拆分字符串?

时间:2011-09-23 10:09:30

标签: javascript regex string split

给定字符串

s1 = "abcfoodefbarghi" 

s2 = "abcbardefooghi"

如何将s1拆分为“abc”和“defbarghi” 和s2成“abc”和“defooghi” 即:在第一次出现字符串“foo”或“bar”

时,将字符串拆分为两个

我想这可以用s.split(/regexp/)完成,但这个正则表达式应该是什么?

2 个答案:

答案 0 :(得分:3)

以这种方式使用正则表达式:

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 */

RE的解释:

  • [\S\s]*?匹配足够的字符以匹配RE的下一部分,即
  • (foo|bar)“foo”或“bar”
  • [\S\s]*匹配其余字符

RE的一部分周围的括号创建一个组,以便可以引用分组的匹配,而(?:)创建一个不可引用的组。

答案 1 :(得分:2)

str.replace(/foo|bar/,"\x034").split("\x034")

idea是用特殊的(不可见的)String替换第一个匹配项,然后对该字符串进行拆分。