[英]Java - regexp - capture digits but only if not preceded by a comparator
[英]Java RegExp for a separated group of digits
我正在尝试编写一个正则表达式验证:1到99之间的一组(或多个)数字,中间用|
隔开|
或,
(可以组合使用)
例
必须接受:
1
10
1,2,3|5|10,20|30
1|5
必须拒绝:
1,
10,,
1,2,3!5
对于数字组,其直截了当: [1-9][0-9]
。 对于其余部分,这仍然是个谜。
题
有人可以协助提出正确的正则表达式吗?
^[1-9][0-9]?(?:[,|][1-9][0-9]?)*$
说明:
^ # Start of string
[1-9][0-9]? # Match a number between 1 and 99
(?: # Start of optional capturing group:
[,|] # Match one separator
[1-9][0-9]? # and a number 1-99
)* # any number of times (including 0)
$ # End of string
\d([,|]?\d)*
是表示的可能候选者,它表示重复至少一个或多个数字,并由{ ','
, '|'
任意字符分隔开(可选- [,|]
后的?
表示可选) '|'
}。
证明:
,
或|
在字符串的开头或结尾。 参见演示进行测试。
如果您想逐行接受它,拒绝以分隔符char开头或结尾的内容,只需将regexp锚定到^
和$
到行的开头/结尾。 就像在demo2中一样 。
^\d([,|]?\d)*$
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.