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

时间:2016-03-23 11:29:21

标签: regex match

这是我用来验证字符串的正则表达式,该字符串可以包含小写和大写字母,数字和短划线:

/([a-zA-Z0-9-])+$/

它有以下结果:

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

我做错了什么?

1 个答案:

答案 0 :(得分:5)

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

^$在字符串的开头和结尾之间说([a-zA-Z0-9-])+可以有一个或多个字符{{ 1}}

你的正则表达式匹配字符串结尾前包含一个或多个字符a-zA-Z0-9-的所有内容,无论之前是什么。

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