Regex 正则表达式匹配字符串的一部分,但不匹配整个字符串

Regex 正则表达式匹配字符串的一部分,但不匹配整个字符串,regex,match,Regex,Match,这是我用来验证可以包含小写和大写字母、数字和破折号的字符串的正则表达式: /([a-zA-Z0-9-])+$/ 其结果如下: abd-匹配 abcd--匹配 abcd0-匹配 abcd0--匹配 abc@-不匹配(正确) abc@efg-匹配(不正确,不应该) 我做错了什么?我想说你需要/^([a-zA-Z0-9-])+$/。您希望匹配整个字符串,而不仅仅是一部分,但是您缺少字符串开头的标记^ ^和$表示字符串的开头和结尾之间,([a-zA-Z0-9-])+表示可以有一个或多个字符a-zA

这是我用来验证可以包含小写和大写字母、数字和破折号的字符串的正则表达式:

/([a-zA-Z0-9-])+$/
其结果如下:

  • abd
    -匹配
  • abcd-
    -匹配
  • abcd0
    -匹配
  • abcd0-
    -匹配
  • abc@
    -不匹配(正确)
  • abc@efg
    -匹配(不正确,不应该)

我做错了什么?

我想说你需要
/^([a-zA-Z0-9-])+$/
。您希望匹配整个字符串,而不仅仅是一部分,但是您缺少字符串开头的标记
^

^
$
表示字符串的开头和结尾之间,
([a-zA-Z0-9-])+
表示可以有一个或多个字符
a-zA-Z0-9-

您的regexp匹配字符串末尾之前包含一个或多个字符的所有内容,无论前面是什么

您可以在上测试正则表达式(非常好的正则表达式测试在线工具,包括解释、参考等)