Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/389.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript-Regex-如何过滤不属于Regex的字符_Javascript_Regex - Fatal编程技术网

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。使用
+
量词会更快。