帮助需要在这个正则表达式中修复一个小东西
^\d{2}\-\d{3}\-\d{6}
验证此格式11-111-111111。它工作正常。但最后一个(6位数)也验证超过6位数。这意味着如果我把11-111-11111111(最后一部分的8位数),上面的正则表达式验证它?
有人可以告诉我如何将其限制为6位数吗?
答案 0 :(得分:11)
还要使用字符串的开头($
)标记字符串的结尾(^
):
^\d{2}\-\d{3}\-\d{6}$
现在整个字符串必须与此模式匹配。
答案 1 :(得分:5)
在正则表达式的末尾添加$
。 $
是字符串或行结束锚,并且将确保最后一节中的数字不超过6位(因为字符串必须在此之后结束)。
答案 2 :(得分:2)
您希望使用$
来表示该行的结尾,就像您使用^
来表示该行的开头一样。
答案 3 :(得分:1)
我能够通过在正则表达式的末尾添加$
来实现。这将使其在比赛结束时仅识别6位数。
目前,它匹配您的8位数字条目,因为它以前6位开头。
答案 4 :(得分:1)
如果你想捕捉字符串,即使它不是一行的结尾,请使用
^\d{2}\-\d{3}\-\d{6}\D
指定6位数之后的东西必须是非数字。
答案 5 :(得分:1)
^\d{2}-\d{3}-\d{6}(?:\D|$)
最后一部分(?:\D|$)
匹配任何不是数字或行尾
答案 6 :(得分:0)
将$
放在正则表达式的末尾。
此符号表示“结束表达”。
答案 7 :(得分:0)
(^\d{2}\-\d{3}\-\d{6})\D
将匹配6位数后跟非数字的任何内容,假设您实际上并不希望该行结束。
答案 8 :(得分:0)
你的正则表达式的基础是存在的,但你需要放入边界。
以下正则表达式匹配您想要的并捕获数字字符串。它的两端都是非数字或字符串的开头/结尾。
(?:[^\d]|^)(\d{2}-\d{3}-\d{6})(?:[^\d]|$)