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

Creating javascript regex tp replace characters using whitelist

本文关键字:名单 替换 字符 白名单 正则表达式 javascript 创建      更新时间:2023-09-26

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

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

它怎么了?

感谢

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

尝试

var regEx = /[^'s'w()?!]+/g;

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

您需要使用g(全局)修饰符:

var regEx = /^[^('s|'w|'d|()|?|!|<br>)]*?$/g; // <-- `g` goes there
qstr += tempStr.replace(regEx, '');

这允许您的表达式多次匹配。