我需要验证给定的String最多包含12位数字和一个破折号。
初始正则表达式: ^[0-9]*-?[0-9]*$
修改后的RegEx: ^([0-9]*-?[0-9]*){1,12}$
示例(应该是有效的): 12356978-9
问题在于第一个RegEx不验证长度,而第二个RegEx不起作用。
注意:一切都必须在正则表达式中完成,而不是使用string.length()检查长度
丑陋的方式:
^([0-9]-[0-9]{1,11}|[0-9]{2}-[0-9]{1,10}|[0-9]{3}-[0-9]{1,9}| ...)$
使用先行方式,结合两个条件:
^(?=\\d*-\\d*$)(?=.{1,13}$).*$
(受此Alan Moore的回答启发)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句