[英]Regex - How to match an entire string and capture only a subgroup if it it is certain length
我想在Java中使用此正则表达式提供一些帮助,我正在其中用户在聊天中输入票证号码。
我正在使用以下可能性和正则表达式TTN-\\d{1,4}?([0-9]{1,9})
。
位数可以为10,但有时用户不会包括前导零,因此我需要确保将字符串与最多10位数字匹配。 但是,我遇到的问题是,如果位数大于10,它仍然会捕获。
我想与以下内容相匹配,并捕获“ TTN-”后的数字
random word TTN-484424 random word
-我会捕获4844254。效果很好。
TTN-0000846110
我会捕获0000846110。效果很好。
hey look at TTN-0000844555 blah blah
-我会捕获0000844555的。效果很好。
random word TTN-00099999990980 random word
-我不想匹配此字符串,因为数字位数大于10; 因此,用户错误地输入了票证编号。
我一直在阅读正则表达式教程,并尝试使用“ $”来表示字符串的结尾,但这不起作用,因为它的长度仍在继续。
如何表示正则表达式仅在字符串的数字小于等于10时才开始匹配?
谢谢!
使用单词边界。
TTN-(\d{1,10})\b
\\d{1,10}
匹配1到10位数字的字符。 \\b
单词字符和非单词字符之间匹配的单词边界。
最多不能超过10个数字。
TTN-(\\d{1,10})(?!\\d)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.