javascript - RegEx(在 JavaScript 中查找/替换)- 匹配非字母数字字符但忽略 - 和 +

标签 javascript regex alphanumeric non-alphanumeric

我们一直在使用以下 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/

相关文章:

javascript - 尝试添加警告以防止用户在提交之前离开表单。我究竟做错了什么?

javascript - 这段代码如何与reactJs一起工作

javascript - 数据克隆错误: An object could not be cloned

c# - 为什么在这个 Regex 中要转义左括号?

php - CakePHP 验证规则 : alphanumeric with spaces

c - 在C中将字母数字存储为未知数量的数字

javascript - 比较与 Javascript 中的结果相对应的变量

c# - 正则表达式:替换内部字符串

php - 使用 PHP 正则表达式从 html 中提取 JSON 对象

具有字母数字顺序的 MySQL 查询