我想验证用户的输入,并使用以下(工作正常)作为正则表达式。
pattern = /^[a-zA-Z0-9 .,!?;-]+$/;
但是当我尝试所有我想要的角色时,就是这个。
pattern = /^[a-zA-Z0-9 .,!?;-:()@'+=/]+$/;
它没有用,我也不知道为什么。另外,如果您向我解释添加^
和+$
时的区别,我会非常感激。此外,我尝试使用\s
而不是空格,它仍然无法工作(我更喜欢空格,因为我想限制换行)。
答案 0 :(得分:-2)
“hyphen-minus”字符-
在character set([
和]
之间的一组字符)中具有特殊含义。它-
定义了一系列字符。大多数情况下,您希望-
表示自己的字符集,您需要使用\-
来逃避其特殊含义。在您的使用中,-
在\-
和;
之间使用时需要转发:
。
工作:
pattern = /^[a-zA-Z0-9 .,!?;\-:()@'+=/]+$/;
如果您确实需要:
和;
之间的字符范围,则需要指定字符代码较低的字符代码(Ascii code chart或Unicode )首先。在这种情况下,这意味着:-;
:
位于;
之前:
显示:-;
范围有效:
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 .,!?;-:()@'+=/]+$/;