【问题标题】:Javascript regular expression character set limit [duplicate]Javascript正则表达式字符集限制[重复]
【发布时间】:2017-01-12 05:17:03
【问题描述】:

我想验证用户的输入,我使用以下(工作正常)作为正则表达式。

 pattern = /^[a-zA-Z0-9 .,!?;-]+$/;

但是当我尝试使用我想要的所有字符时,就是这样。

pattern = /^[a-zA-Z0-9 .,!?;-:()@'+=/]+$/;

它不起作用,我不知道为什么。另外,如果您向我解释添加^+$ 时的区别,我将不胜感激。我也试过用\s代替空格,但还是不行(我更喜欢空格,因为我想限制换行)。

【问题讨论】:

标签: javascript regex


【解决方案1】:

hyphen-minus”字符-character set[] 之间的一组字符)中具有特殊含义。它,-,定义了一个字符范围。大多数情况下,在您希望- 代表自己的字符集中,您需要使用\- 来逃避其特殊含义。在您的使用中,-;: 之间使用时需要对\- 进行转义。

工作:

pattern = /^[a-zA-Z0-9 .,!?;\-:()@'+=/]+$/;

如果您确实想要:; 之间的字符范围,那么您需要首先指定具有较低字符代码(Ascii code chartUnicode)的字符范围。在这种情况下,这意味着:-; 因为:; 之前:

显示:-;范围有效:

pattern = /^[a-zA-Z0-9 .,!?:-;()@'+=/]+$/;

如果您尝试指定一个范围,例如z-a,也会产生同样的错误。

显示与z-a 范围相同的错误:

pattern = /^[z-aA-Z0-9 .,!?:-;()@'+=/]+$/;

如果- 是字符集中的第一个或最后一个字符,则它没有特殊含义。

注意:在某些正则表达式实现中,如果您尝试将- 用作字符集中的最后一个字符,它确实具有其特殊含义。你最好养成使用\- 逃避它的习惯。

使用- 作为字符集中的第一个或最后一个字符:

pattern = /^[-a-zA-Z0-9 .,!?;:()@'+=/]+$/;
pattern = /^[a-zA-Z0-9 .,!?;:()@'+=/-]+$/;

原代码有错误:

pattern = /^[a-zA-Z0-9 .,!?;-:()@'+=/]+$/;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-09-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多