我正在尝试创建一个正则表达式,它将替换所有不在指定白名单中的字符(字母,数字,空格,括号,问号和说明标记)
这是代码:
var regEx = /^[^(\s|\w|\d|()|?|!|<br>)]*?$/;
qstr += tempStr.replace(regEx, '');
它出了什么问题?
谢谢
答案 0 :(得分:7)
<br>
错误 - 您无法匹配字符类中的特定子字符串。\d
是多余的,因为它已经包含在\w
中(感谢Alex K。!)+
而不是*
,以免自己更换大量空字符串。尝试
var regEx = /[^\s\w()?!]+/g;
并独立处理<br>
(在应用正则表达式之前,或删除括号)。
答案 1 :(得分:0)
您需要使用g
(全局)修饰符:
var regEx = /^[^(\s|\w|\d|()|?|!|<br>)]*?$/g; // <-- `g` goes there
qstr += tempStr.replace(regEx, '');
这允许您的表达式多次匹配。