我需要一个正则表达式,将只接受数字从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到394[0-5]
:两位数从40到45(?:,(?!$))?
:一个可选无组相匹配的逗号,
:逗号字符(?!$)
:$
:
行尾这将拒绝任何大于45的入口
^(?:(?:([ 1 - 9] | [1 - 3] [0 - 9] [0 - 5 | 4 ]))(?:,|$))+$
^
:起始行(?: ... )+
:可以出现一次或多次的非捕获组(?:([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的两位数字
(?:,|$)
:匹配逗号或行尾的非捕获组,
:逗号字符$
:行结束
$
: line End
测试https://regex101.com/r/6f3Ita/1
还有,第一个没有以逗号结尾的输入:^ (?: ?: ((1 - 9) | [1 - 3] [0 - 9] [0 - 5 | 4 ]))(?:,(?= d) | $)) + $