【发布时间】:2016-11-18 21:56:33
【问题描述】:
我需要验证给定的字符串是否包含最多 12 位数字和一个短划线。
初始正则表达式: ^[0-9]*-?[0-9]*$
修改后的正则表达式: ^([0-9]*-?[0-9]*){1,12}$
示例(应有效):12356978-9
问题是第一个 RegEx 不验证长度,第二个不起作用。
注意:一切都必须在正则表达式中完成,而不是使用 string.length() 来检查长度
【问题讨论】:
-
如果你能给出一些你想比较的示例字符串会很好。
-
破折号后面会只有一位吗?
-
123465789-10 有效,123456789-1011 因长度无效,123465789 无效,因为其中没有破折号
-
String s = ... ; return s.length()<=13 && s.matches("^\\d+-\\d+$");? -
@Seth 你改变了问题。没有人说没有破折号是可接受的解决方案!