javascript正则表达式可以替换特殊字符,但允许使用白名单,使用xregexp
javascript regular expression to replace special characters, but allow a whitelist, using xregexp
我想替换字符串中的大多数特殊字符(在javascript中),但允许一些特殊情况,如c++、c#等。我已经在node.js中试用了xregexp库,我想我可以删除所有非字母和数字。我还想允许所有的外语信件。这就是我目前所拥有的:
var str = "I do programming in c++ and sometimes c#, but + and # should be removed";
regex = XRegExp('[^''s''p{N}''p{L}]+', 'g');
var replaced = XRegExp.replace(str, regex, "");
console.log(replaced);
此输出
I do programming in c and sometimes c, but and should be removed
我需要创建一些允许使用单词的列表,比如c++和c#。所需输出为:
I do programming in c++ and sometimes c#, but and should be removed
您只需在捕获组中使用替换,然后使用替换模式中的反向引用来恢复此文本:
var str = "I do programming in c++ and sometimes c#, but + and # should be removed";
regex = XRegExp('(''b(?:c[+]{2}|c#)(?!''w))|[^''s''p{N}''p{L}]+', 'ig');
// ^-- capture group 1 -----^ ^
var replaced = XRegExp.replace(str, regex, "$1");
// ^^
console.log(replaced);
<script src="https://cdnjs.cloudflare.com/ajax/libs/xregexp/2.0.0/xregexp-all-min.js"></script>
注意,我添加了一个i
标志以使模式不区分大小写,在替换开始时添加了'b
以仅在单词边界匹配(因为c++
和c#
以字母(单词字符)开头),以及确保在+
和#
之后没有单词字符的前瞻(?!'w)
('b
在这里不起作用,因为它们不是单词字符)。
相关文章:
- 禁用带有字符白名单的表单提交
- Meteor.js Cordova错误:错误白名单拒绝
- Cordova白名单允许导航与访问原点
- 使用 PhoneGap 在运行时将 URL 添加到 iPhone 中 cordova.plist 文件中的白名单中
- 棱角分明.js aHrefSanitization白名单不起作用
- Javascript 正则表达式白名单与字符限制
- 无法在“导航器”上执行“注册协议处理程序”:方案“消息”不属于方案白名单
- 将 JavaScript 列入白名单以去除 html 标签
- 如何将 match() 用于字符白名单
- 使用白名单安全地剥离javascript中的html标签
- 有可能绕过电话空白白名单政策吗
- javascript正则表达式可以替换特殊字符,但允许使用白名单,使用xregexp
- 创建javascript正则表达式以使用白名单替换字符
- JSON.stringify带有嵌套对象的白名单
- '不是列入白名单的来源'Azure移动服务身份验证错误
- 使用 JavaScript 根据白名单从字符串中删除字符
- Cordova白名单插件手动检测阻塞导航(事件)
- 自定义白名单
- Phonegap从白名单URL打开外部链接
- Javascript Regex -用白名单净化字符串