我有一个字符串:
10-02; 34-05;
像dd-dd这样的元素可以重复多次:
10-02; 34-05; 12-02; 23-05; 10-42; 44-05
在字符串的末尾,符号;
可以是可选的,但在元素dd-dd之间,符号;
应该是必需的。
我尝试构建正则表达式/^([0-9]{2}-[0-9]{2}[;])+$/)
,但它涵盖了10-02;34-05;12-02;23-05;10-42;44-05
但不包含10-02;34-05;12-02;23-05;10-42;44-05;
的情况,最后带有符号;
。
如何构建正则表达式来覆盖这两种情况。
感谢。
答案 0 :(得分:3)
简单^(?:\d{2}-\d{2}(?:;|$))+$
这意味着:
^ # start of line
(?: # non-capturing group
\d{2} # match 2 digits
- # match a hyphen
\d{2} # match 2 digits
(?:;|$) # match ; or end of line
)+ # repeat 1 or more times
$ # end of line
注意强>
10-02;34-05;12-012;23-05;10-42;44-05;
^--- You have 3 digits here ??? If so change all {2} to +
答案 1 :(得分:2)
您可以使用?
来选择匹配模式
^\d{2}-\d{2}(;\d{2}-\d{2})*;?$
或
^(\d{2}-\d{2};)*(\d{2}-\d{2};?)$
答案 2 :(得分:2)
这可以简单/简短地表达出来:
^(\d\d-\d\d(;|$))+$
答案 3 :(得分:1)
使用类似的东西:
^(\d{2}-\d{2};)*\d{2}-\d{2}(;)?$
?
运算符使最后一个父级表达式可选,就像在其后放置{0, 1}
一样。