1

我需要逐个字符串!(前后空格)和一个 char拆分字符串|

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在正则表达式中的意思。

4

4 回答 4

4

听起来你想要这样的东西:

function split (str) {
    return str.split (/\s[!|]\s/)
}

这将用 a!或被|空白字符包围的字符串打破字符串。

你可以看到它在这里工作。

但一般来说,如果您想使用 a |(或任何特殊字符)作为文字,您可以使用反斜杠 ( \) 对其进行转义,如下所示:

/\s!\s|\s\|\s/
于 2013-09-23T04:59:25.943 回答
1

您可以使用管道运算符来包含两者:使用此正则表达式/ ! | \| /

于 2013-09-23T05:00:53.797 回答
1

在这种情况下,您可以(并且应该)使用pswg 显示的字符类来执行此操作

一般问题的答案

如何用两个正则表达式分割字符串

...是使用“替代”:

str.split(/first expression|second expression/);

例如:

str.split(/foo|bar/);

foo...会在or上分裂bar

在这种情况下,它将是:

str.split(/\s(?:!|\|)\s/);

(我将交替放在一个非捕获组中以控制交替中的内容。)

但同样,对于两个字符(而不是两个不同的表达式),你最好使用一个字符类:

str.split(/\s[!|]\s/);
于 2013-09-23T05:01:07.613 回答
1

或在正则表达式中是|

所以,如果之前和之后的空间|

function split (str) {
    return str.split(/\s!\s|\s\|\s/);
}

别的:

function split (str) {
    return str.split(/\s!\s|\|/);
}
于 2013-09-23T05:06:40.887 回答