如何检查字符串是否与正则表达式完全匹配?

Rob*_*Rob 4 php regex

我正在为客户的产品销售网站编写注册脚本.

我目前正在处理参考ID输入区域,我想确保参考ID在付款方式的正确参数范围内

参考ID将如下所示: XXXXX-XXXXX-XXXXX

我正在尝试使用此RegEx模式来匹配它: /(\w+){5}-(\w+){5}-(\w+){5}/

这完全匹配它,但它也匹配 XXXXX-XXXXX-XXXXXXXXXX

或者至少它在那里找到匹配.我希望它确保整个字符串匹配.我对RegEx不太熟悉

我怎样才能做到这一点?

ale*_*lex 9

您需要使用开始和结束锚点.或者,如果您不需要捕获这些组,则可以省略括号.

此外,这些+{5}手段不止一次匹配5次.我相信你不想这样,所以我放弃了+.

/^\w{5}-\w{5}-\w{5}\z/
Run Code Online (Sandbox Code Playgroud)

另外,我使用了\z你的字符串不匹配"abcde-12345-edcba\n".


Lig*_*ica 9

分别使用^$匹配输入字符串的开头和结尾.

另请注意,您的使用+是多余的,因为(\w+){5}"单词字符,至少一次,五次"意味着它可以匹配至少五次.你可能意味着(\w){5}(或者只是\w{5}你不需要反向引用;我会在我的例子中假设你这样做).

/^(\w){5}-(\w){5}-(\w){5}$/
Run Code Online (Sandbox Code Playgroud)

  • -1因未能发现(\ w +){5}的问题 (3认同)