我需要按字符串!
(前后空格)和一个字符|
分割字符串。
function split (str) {
return str.split (/\s!\s/)
}
result = split ("hello world ! hello | world! hi ");
console.log (result); // result must be: ["hello world", "hello", "world! hi "]
我无法弄清楚该怎么做。现在我所做的只是!
分裂。需要对char |
进行筛选,因为它在正则表达式中表示OR
。
答案 0 :(得分:4)
听起来你想要这样的东西:
function split (str) {
return str.split (/\s[!|]\s/)
}
这将使用空格字符包围的!
或|
来破坏字符串。
您可以看到它正常工作here。
但一般来说,如果你想使用|
(或任何特殊字符)作为文字,你可以使用反斜杠(\
)来逃避它,如下所示:
/\s!\s|\s\|\s/
答案 1 :(得分:1)
您可以使用管道运算符来包含:
使用此正则表达式/ ! | \| /
答案 2 :(得分:1)
在这种情况下,您可以(并且应该)使用字符类as p.s.w.g shows执行此操作。
但一般问题的答案
如何用两个正则表达式分割字符串
...是使用“交替”:
str.split(/first expression|second expression/);
例如:
str.split(/foo|bar/);
...会在foo
或bar
上分开。
在这种情况下,它将是:
str.split(/\s(?:!|\|)\s/);
(我将交替置于非捕获组中以控制交替中的内容。)
但同样,只有两个字符(而不是两个不同的表达式),你最好使用一个字符类:
str.split(/\s[!|]\s/);
答案 3 :(得分:1)
或正则表达式为|
所以,如果|
之前和之后的空格
function split (str) {
return str.split(/\s!\s|\s\|\s/);
}
否则:
function split (str) {
return str.split(/\s!\s|\|/);
}