我们一直在使用以下js / regex来查找和替换除 - 和+之外的所有非字母数字字符
outputString = outputString.replace(/ [^ \ w | ^ \ + | ^ - ] * / g,“”);
但它并不完全有效 - 它不会取代^和|字符。我不禁想知道这是否与^和|有关在正则表达式本身中用作元字符。
我试过切换使用 [\W|^+|^-]
,但这取代了 - 和+。我认为可能是一个先行断言可能是答案,但我不太确定如何实现它们。
有谁知道如何实现这一目标?
我们一直在使用以下js / regex来查找和替换除 - 和+之外的所有非字母数字字符
outputString = outputString.replace(/ [^ \ w | ^ \ + | ^ - ] * / g,“”);
但它并不完全有效 - 它不会取代^和|字符。我不禁想知道这是否与^和|有关在正则表达式本身中用作元字符。
我试过切换使用 [\W|^+|^-]
,但这取代了 - 和+。我认为可能是一个先行断言可能是答案,但我不太确定如何实现它们。
有谁知道如何实现这一目标?
字符类不做交替,因此为什么 |
是文字的,而且是 ^
必须在课程的开始才能生效(否则它会被字面上对待。)
用这个:
[^\w+-]+
(另外,如果 -
不是最后一次,它需要被转义为 \-
在字符类中 - 如果可以将更多字符添加到例外列表中,请小心。
您也可以使用这样的负向前瞻:
(?![+-])\W
注意:你不需要 *
要么 +
之后 \W
,因为前瞻只适用于紧随其后的角色(和 g
flag使替换重复直到完成)。
另请注意 \w
和 \W
考虑 _
作为一个单词字符。如果不需要那么替换你可以使用 (?![+-])[\W_]
(或在第一个表达式中使用显式范围)。
字符类不做交替,因此为什么 |
是文字的,而且是 ^
必须在课程的开始才能生效(否则它会被字面上对待。)
用这个:
[^\w+-]+
(另外,如果 -
不是最后一次,它需要被转义为 \-
在字符类中 - 如果可以将更多字符添加到例外列表中,请小心。
您也可以使用这样的负向前瞻:
(?![+-])\W
注意:你不需要 *
要么 +
之后 \W
,因为前瞻只适用于紧随其后的角色(和 g
flag使替换重复直到完成)。
另请注意 \w
和 \W
考虑 _
作为一个单词字符。如果不需要那么替换你可以使用 (?![+-])[\W_]
(或在第一个表达式中使用显式范围)。