无法在Javascript中创建RegExp项目

时间:2017-01-12 07:51:13

标签: javascript regex special-characters

在js中,我使用正则表达式验证来检查我的输入字符串是否与特殊字符匹配,如下所示。所以我使用RegExp对象的test()方法。

但是我总是得到一个异常错误说:

  

Uncaught SyntaxError:无效的正则表达式:   / [^ @ / []<>?:;, = | +“] /:无需重复

我想在输入字符串中检查的特殊字符:

  

^ @ / []< > ? :; ,   *   = |   +“

var str = "My Test String";
var re = new RegExp('[^@/\[\]\<\>\?:;,*=|\+\"]*');
var result = re.test(str);

alert(result);

我在代码中做错了吗?

1 个答案:

答案 0 :(得分:2)

错误是众所周知的,在构造函数表示法中,您需要使用双反斜杠来转义特殊字符。 |+导致此问题,因为字符类过早地以\]结束,其余的是字符类之外的模式的序列

关于

  

我想在输入字符串中检查的特殊字符:

     

^ @ / [ ] < > ? : ; , * = | + "

您可以使用/[@^\/[\]<>?:;,*=|+"]/正则表达式。

var str = "My Test String";
var re = /[@^\/[\]<>?:;,*=|+"]/;
var result = re.test(str);
console.log(result ? "Special chars found!" : "No special chars found!");

&gt;之类的实体添加到仅与该集合中的单个字符匹配的字符类中,将使正则表达式匹配gt&作为单独的字符。 字符类开头的^创建了一个否定的字符类,因此你的正则表达式匹配@/[以外的任何内容,然后跟随一系列模式。

如果您需要包含实体,请将其添加为替代选项:

var re = /[@^<>\/[\]?:;,*=|+"]|&(?:quot|[gl]t);/