我们一直在使用以下 js/regex 来查找和替换除 - 和 + 之外的所有非字母数字字符
outputString = outputString.replace(/[^\w|^\+|^-]*/g, "");
但是它不能完全工作——它不能取代 ^ 和 |人物。我不禁想知道这是否与 ^ 和 | 有关在正则表达式本身中用作元字符。
我已经尝试切换到使用 [\W|^+|^-]
,但它取代了 - 和 +。我认为前瞻断言可能是答案,但我不太确定如何实现它们。
有没有人知道如何完成这个?
最佳答案
字符类不进行交替,因此 |
是字面的,而 ^
必须在类的开头才能生效(否则按字面处理.)
使用这个:
[^\w+-]+
(此外,如果 -
不是最后一个,则需要在字符类中将其转义为 \-
- 所以如果更多字符可能会添加到异常(exception)列表)。
你也可以像这样用一个负面的前瞻来做到这一点:
(?![+-])\W
注意:您不需要在 \W
之后使用 *
或 +
,因为先行仅适用于紧随其后的字符 ( g
标志使替换重复直到完成)。
另请注意,\w
和 \W
将 _
视为单词字符。如果不需要,则可以使用 (?![+-])[\W_]
(或在第一个表达式中使用显式范围)来替换它。
关于javascript - RegEx(在 JavaScript 中查找/替换)- 匹配非字母数字字符但忽略 - 和 +,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3177999/