【问题标题】:Cannot create a RegExp project in Javascript无法在 Javascript 中创建 RegExp 项目
【发布时间】: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


【解决方案1】:

这个错误是众所周知的,在构造函数符号中,您需要使用双反斜杠来转义特殊字符。 |+ 引起了这里的问题,因为字符类以\] 过早结束,其余的是字符类之外的模式序列

关于

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

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

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

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

将像&amp;gt; 这样的实体添加到只匹配集合中单个字符的字符类中,将使正则表达式匹配gt&amp; 作为单独的字符。 ^ 在字符类的开头创建了一个否定字符类,因此您的正则表达式匹配除@/[ 以外的任何内容,然后是一系列模式。

如果您需要包含实体,请添加它们作为替代:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-16
    • 2012-07-07
    • 2020-09-17
    • 2019-12-04
    相关资源
    最近更新 更多