Javascript-Regex-如何过滤不属于Regex的字符
我想接受单词和一些特殊字符,所以如果我的正则表达式 不完全匹配,假设我显示一个错误Javascript-Regex-如何过滤不属于Regex的字符,javascript,regex,Javascript,Regex,我想接受单词和一些特殊字符,所以如果我的正则表达式 不完全匹配,假设我显示一个错误 var re = /^[[:alnum:]\-_.&\s]+$/; var string = 'this contains invalid chars like #@'; var valid = string.test(re); 但是现在我想“过滤”一个短语,删除所有与正则表达式不匹配的字符 var validString = string.filter(re); // something simila
var re = /^[[:alnum:]\-_.&\s]+$/;
var string = 'this contains invalid chars like #@';
var valid = string.test(re);
但是现在我想“过滤”一个短语,删除所有与正则表达式不匹配的字符
var validString = string.filter(re); // something similar to this
通常一次使用replace,但是如何列出与正则表达式不匹配的所有字符
var validString = string.filter(re); // something similar to this
我该怎么做
问候
Wiktor Stribiżew解决方案运行良好:
regex=/[^a-zA-Z-\\.&s]+/g;
让我们class='一些血腥的测试@rfdsfds';
s=s.replace(/[^\w\s.&-]+/g');
控制台日志编码>以匹配所有非字母数字字符,或-.&
移动^
组内[]
var str='asd.=!\u35;$%^&*()564';
console.log(
str.match(/[^a-z0-9-\s]/gi),
str.replace(/[^a-z0-9-\s]/gi,”)
);代码>JS正则表达式引擎不支持POSIX字符类,如[:alnum:][/code>。您可以改用[A-Za-z0-9]
,但仅用于匹配ASCII字母和数字
当前正则表达式与包含允许字符的整个字符串相匹配,并且不能用于返回与[^a-zA-Z0-9.&\s-]
不匹配的字符
您可以使用
var s='这包含像#@这样的无效字符';
var res=s.replace(/[^\w\s.&-]+/g');
var notallowedchars=s.match(/[^\w\s.&-]+/g);
控制台日志(res);
控制台日志(不允许使用字符)代码>查看字符串是保留的wordJS正则表达式引擎不支持POSIX字符类,如[:alnum://code>(您可以使用[a-Za-z0-9]
,但仅用于匹配ASCII字母和数字)。您可以尝试运行s.match(/[^\w\s.&-]/g)
来获取与字母、数字、
、
、&
、空格和-
字符串.split(“”)不匹配的字符。筛选(x=>!regeshex.test(x))
,但之后如何删除它们?@raj sadfully它不过滤任何东西,我修改了我的问题:如果是全局替换,为什么需要[]+
?@Justinas一次性删除匹配的字符条纹。这意味着regex引擎在内部进行的替换更少。那么比简单替换(如果更快的话)快多少呢?@Justinas Check。使用+
量词会更快。