繁体   English   中英

Java RegExp用于单独的数字组

[英]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

在regex101.com上进行实时测试。

\d([,|]?\d)*

是表示的可能候选者,它表示重复至少一个或多个数字,并由{ ',''|'任意字符分隔开(可选- [,|]后的?表示可选) '|' }。

证明:

  • 叉指分隔符是可选的,因此两个分隔符之间可以有任意位数。 这允许任意长度的数字序列。
  • 数字之间最多可以有一个分隔符(分隔符是可选的,但必须后面跟一个数字)。
  • 由于正则表达式以数字开头,并以一个数字结尾,所以不可接受,| 在字符串的开头或结尾。

参见演示进行测试。

注意

如果您想逐行接受它,拒绝以分隔符char开头或结尾的内容,只需将regexp锚定到^$到行的开头/结尾。 就像在demo2中一样

^\d([,|]?\d)*$

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM