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