我正在为客户的产品销售网站制作注册脚本。
我目前正在处理参考ID输入区域,我想确保参考ID在付款方式的正确参数范围内
参考ID将如下所示:XXXXX-XXXXX-XXXXX
我正在尝试使用此RegEx模式来匹配它:/(\w+){5}-(\w+){5}-(\w+){5}/
这完全匹配,但它也匹配XXXXX-XXXXX-XXXXXXXXXX
或者至少它在那里找到匹配。我希望它确保整个字符串匹配。我对RegEx不太熟悉
我该怎么做?
答案 0 :(得分:9)
您需要使用开始和结束锚点。或者,如果您不需要捕获这些组,则可以省略括号。
此外,+{5}
表示不止一次匹配5次。我相信你不想这样,所以我放弃了+
。
/^\w{5}-\w{5}-\w{5}\z/
另外,我使用了\z
,因此您的字符串与"abcde-12345-edcba\n"
不匹配。
答案 1 :(得分:9)
使用^
and $
分别匹配输入字符串的开头和结尾。
另请注意,您使用+
是多余的,因为(\w+){5}
表示“一个字符,至少一次,五次”,这意味着它至少可以匹配 五次。如果你不需要反向引用,你可能意味着(\w){5}
(或只是\w{5}
;我会在我的例子中假设你这样做。)
/^(\w){5}-(\w){5}-(\w){5}$/
答案 2 :(得分:2)
将正则表达式放在^
和$
之间以匹配整个字符串并检查它是否与任何内容匹配
示例:
/^(\w+){5}-(\w+){5}-(\w+){5}$/
答案 3 :(得分:1)
答案 4 :(得分:0)
答案 5 :(得分:0)
将其括在“^”和“$”中:
/^(\w+){5}-(\w+){5}-(\w+){5}$/
答案 6 :(得分:0)
/^(\w){5}-(\w){5}-(\w){5}$/
你需要明确地说你希望模式从字符串的开头开始并在结束时结束
你可以改进它:/^((\w){5}-){2}(\w){5}$/
;这样,您就可以轻松修改序列号可能包含的元素数量。
答案 7 :(得分:0)
您需要^
匹配字符串的开头,$
匹配结尾:
/^\w{5}-\w{5}-\w{5}$/
请注意(\w+){5}
不正确,因为这意味着重复\w+
五次,但这又意味着“一个或更多字符”。
答案 8 :(得分:-1)
在preg中,\ b标记单词边界。所以你可以试试像
这样的东西/\b(\w+){5}-(\w+){5}-(\w+){5}\b/