我需要验证给定的字符串最多包含 12 位数字和一个破折号。
初始正则表达式: ^[0-9]*-?[0-9]*$
修改后的正则表达式: ^([0-9]*-?[0-9]*){1,12}$
示例(应该有效):12356978-9
问题是第一个 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}$).*$
(灵感来自 this Alan Moore's answer )
关于java - 使用正则表达式验证包含破折号的 12 位数字字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40677757/