Javascript正则表达式字符集限制

时间:2016-09-04 18:47:27

标签: javascript regex

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

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

但是当我尝试所有我想要的角色时,就是这个。

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

它没有用,我也不知道为什么。另外,如果您向我解释添加^+$时的区别,我会非常感激。此外,我尝试使用\s而不是空格,它仍然无法工作(我更喜欢空格,因为我想限制换行)。

1 个答案:

答案 0 :(得分:-2)

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 .,!?;-:()@'+=/]+$/;