Given strings
s1 = "abcfoodefbarghi"
and
s2 = "abcbardefooghi"
How can I split s1 into "abc" and "defbarghi" and s2 into "abc" and "defooghi" That is: split a string into two on the first occurrence of either one of strings "foo" or "bar"
I suppose this could be done with s.split(/regexp/)
, but what should this regexp be?
Use a Regular Expression in this way:
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 */
Explanation of the RE:
[\\S\\s]*?
matches just enough characters to match the next part of the RE, which is (foo|bar)
either "foo", or "bar" [\\S\\s]*
matches the remaining characters Parentheses around a part of a RE creates a group, so that the grouped match can be referred, while (?:)
creates a non-referrable group.
str.replace(/foo|bar/,"\x034").split("\x034")
idea是用特殊的(不可见的)String替换第一个匹配项,然后对该字符串进行拆分。
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.