在js中,我使用正则表达式验证来检查我的输入字符串是否与特殊字符匹配,如下所示。所以我使用RegExp对象的test()方法。
但是我总是得到一个异常错误说:
Uncaught SyntaxError:无效的正则表达式: / [^ @ / []<>?:;, = | +“] /:无需重复
我想在输入字符串中检查的特殊字符:
^ @ / []< > ? :; , * = | +“
var str = "My Test String";
var re = new RegExp('[^@/\[\]\<\>\?:;,*=|\+\"]*');
var result = re.test(str);
alert(result);
我在代码中做错了吗?
答案 0 :(得分:2)
错误是众所周知的,在构造函数表示法中,您需要使用双反斜杠来转义特殊字符。 |+
导致此问题,因为字符类过早地以\]
结束,其余的是字符类之外的模式的序列。
关于
我想在输入字符串中检查的特殊字符:
^ @ / [ ] < > ? : ; , * = | + "
您可以使用/[@^\/[\]<>?:;,*=|+"]/
正则表达式。
var str = "My Test String";
var re = /[@^\/[\]<>?:;,*=|+"]/;
var result = re.test(str);
console.log(result ? "Special chars found!" : "No special chars found!");
将>
之类的实体添加到仅与该集合中的单个字符匹配的字符类中,将使正则表达式匹配g
,t
和&
作为单独的字符。
字符类开头的^
创建了一个否定的字符类,因此你的正则表达式匹配@
,/
,[
以外的任何内容,然后跟随一系列模式。
如果您需要包含实体,请将其添加为替代选项:
var re = /[@^<>\/[\]?:;,*=|+"]|&(?:quot|[gl]t);/