仅限正则表达式的数字和逗号



我需要一个正则表达式,将只接受数字从1-45和逗号。没有字母,没有像这样的字符

1
1,2
1,17,30
1,4,5,6,7,11,22,33,44...

不能有长度限制

^(?:(?:([1-9]|[1-3][0-9]|4[0-5])(?:,(?!$))?)+)$

^:开始的
(?: ... )+:无组织,可以出现一次或多次
(?:([1-9]|[1-3][0-9]|4[0-5])(?:,(?!$))?)+:无组包含以下元素:
([1-9]|[1-3][0-9]|4[0-5]):一个捕获组匹配的数字从1到45
[1-9]:单从1到9位数
[1-3][0-9]:两位数从10到39
4[0-5]:两位数从40到45
(?:,(?!$))?:一个可选无组相匹配的逗号
,:逗号字符
(?!$):
$:

行尾这将拒绝任何大于45的入口

^(?:(?:([ 1 - 9] | [1 - 3] [0 - 9] [0 - 5 | 4 ]))(?:,|$))+$

  1. ^:起始行
  2. (?: ... )+:可以出现一次或多次的非捕获组
    • (?:([1-9]|[1-3][0-9]|4[0-5])):包含以下元素的非捕获组:
      1. ([1-9]|[1-3][0-9]|4[0-5]): 1 ~ 45的抓包组
        • [1-9]: 1 ~ 9的个位数
        • [1-3][0-9]:从10到39的两位数字
        • 4[0-5]:从40到45的两位数字
    • (?:,|$):匹配逗号或行尾的非捕获组
      1. ,:逗号字符
      2. $:行结束
  3. $: line End

测试https://regex101.com/r/6f3Ita/1

还有,第一个没有以逗号结尾的输入:^ (?: ?: ((1 - 9) | [1 - 3] [0 - 9] [0 - 5 | 4 ]))(?:,(?= d) | $)) + $

相关内容

  • 没有找到相关文章

最新更新