【发布时间】:2017-01-12 07:51:13
【问题描述】:
在 js 中,我使用正则表达式验证来检查我的输入字符串是否与如下所示的特殊字符匹配。所以我使用 RegExp 对象的 test() 方法。
但是,我总是得到一个异常错误说:
未捕获的 SyntaxError:无效的正则表达式: /[^@/[]?:;,=|+"]/: 没什么好重复的
我想在输入字符串中检查的特殊字符:
^@/[]? : ; , * = | + "
var str = "My Test String";
var re = new RegExp('[^@/\[\]\<\>\?:;,*=|\+\"]*');
var result = re.test(str);
alert(result);
我在代码中做错了吗?
【问题讨论】:
-
为什么要向 character class 添加仅匹配集合中单个字符的实体?该错误是众所周知的,在构造函数表示法中,您需要使用双反斜杠来转义特殊字符。此外,
^在字符类的开头创建了一个 negated 字符类,因此您的正则表达式匹配除@、/、[之外的任何内容,然后是一系列模式。你打算使用var re = /[@^<>\/[\]?:;,*=|+"]|&(?:quot|[gl]t);/吗? -
或者
re = /[@^\/[\]<>?:;,*=|+"]/够了吗?
标签: javascript regex special-characters