创建javascript正则表达式tp使用白名单替换字符

Sag*_*Low 1 javascript regex

我正在尝试创建一个正则表达式,它将替换所有不在指定白名单中的字符(字母,数字,空格,括号,问号和说明标记)
这是代码:

var regEx = /^[^(\s|\w|\d|()|?|!|<br>)]*?$/;
    qstr += tempStr.replace(regEx, '');
Run Code Online (Sandbox Code Playgroud)

这有什么问题?

谢谢

Tim*_*ker 7

  • 是错误的-他们只允许正则表达式匹配整个字符串
  • 懒惰的量词是错误的 - 你不希望正则表达式匹配0个字符(如果你已经删除了锚点)
  • 括号和管道字符是错误的 - 您在字符类中不需要它们.
  • <br>是错误的 - 您无法匹配字符类中的特定子字符串.
  • \d是多余的,因为它已经包含在内\w(感谢Alex K.!)
  • 您缺少全局修改器以确保可以执行多个替换.
  • 您应该使用+而不是*为了不用自己替换大量空字符串.

尝试

var regEx = /[^\s\w()?!]+/g;
Run Code Online (Sandbox Code Playgroud)

<br>独立处理s(在应用正则表达式之前,或删除括号).

  • 我认为\ w也包含\ d (2认同)