我只需要允许字母和一些字符。 我用这个正则表达式:
([a-zA-Z '-_]*)$")
但这也允许, ; : .
为什么?
答案 0 :(得分:2)
字符类中的连字符(-
)指定一个范围,您应该通过将[a-zA-Z '-_]
更改为以下内容来使用反斜杠转义:
[a-zA-Z '\-_]
如果没有这个,正则表达式引擎会将'-_
解释为从'
到_
的一系列字符,其中包含以下字符(http://www.asciitable.com/):
' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _
您可能还想在开始时添加^
并在正则表达式的末尾添加$
,这些是字符串锚点的开头和结尾,它们会阻止您的正则表达式仅匹配部分一串。
答案 1 :(得分:0)
你必须在开始时设置^
,在结尾设置$
以强制它只是该组:
/^[a-zA-Z \'\-_]+$/.test('Adidi:') // false