java - 使用正则表达式验证包含破折号的 12 位数字字符串

标签 java regex

我需要验证给定的字符串最多包含 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/

相关文章:

java - 正则表达式更改 eclipse 中属性的大小写

java - 如何使用正则表达式匹配字符串

java - 在 Eclipse 中调试时停止代码执行而不终止线程

Python:在正则表达式匹配之间提取多行

Python:正则表达式:使用一个正则表达式检测连字符的名称和非连字符的名称

java - 从 HTML 中获取 href 标签

ruby - 字符串:用数字替换空格

java - hibernate 主键的原语或包装器

java - Android Studio-Java.exe 以非零退出值 2 完成

java - 在 Spring 安全性中允许除一个之外的所有 URL