Javascript 正则表达式允许逗号

Javascript 正则表达式允许逗号,javascript,expression,validation,Javascript,Expression,Validation,我只需要字母和一些字符。 我使用这个正则表达式: ([a-zA-Z '-_]*)$") 但这也允许,;: 为什么?字符类中的连字符(-)指定一个范围,您应该通过将[A-zA-Z'-\uz]更改为以下内容,用反斜杠对此进行转义: [a-zA-Z '\-_] 如果没有此选项,正则表达式引擎将把'-解释为从'到的一系列字符,其中包括以下字符(): ”()*+,-。/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

我只需要字母和一些字符。 我使用这个正则表达式:

([a-zA-Z '-_]*)$")
但这也允许
,;:

为什么?

字符类中的连字符(
-
)指定一个范围,您应该通过将
[A-zA-Z'-\uz]
更改为以下内容,用反斜杠对此进行转义:

[a-zA-Z '\-_]
如果没有此选项,正则表达式引擎将把
'-
解释为从
'
的一系列字符,其中包括以下字符():

”()*+,-。/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[\]^_

您可能还希望在正则表达式的开头添加一个
^
,在末尾添加一个
$
,这些都是字符串的开头和结尾锚,它们将阻止正则表达式仅匹配字符串的一部分。

您必须在开头设置
^
,在结尾设置
$
,以强制它仅为该组:

/^[a-zA-Z \'\-_]+$/.test('Adidi:') // false 

-1这也是正确的,因为没有绑定^$和+来设置一个或多个字符。我将OP的问题解释为“正则表达式匹配逗号”,这在转义连字符后将不再可能。无论如何,我在编辑中添加了一个关于锚的注释(顺便说一句,我并不是那个否决你答案的人)。如果你想匹配
-
,你也可以把它作为
[]
中的第一个字符,比如
/^[-a-z]+$/.test('a-little-thing')
谢谢你的快速响应!尝试使用
var regexpatern=/^[a-zA-Z'\-\\-\*$/
。如果开头没有
^
锚定,您将只测试字符串末尾的字符。如果开始与结束不匹配,您可以尝试插入标题
^
(锚定用于输入开头)。
/^[a-zA-Z \'\-_]+$/.test('Adidi:') // false