已关闭,该问题需要details or clarity,目前不接受回答。
**想要改进此问题?**通过editing this post添加详细信息并澄清问题。
11天前关闭
Improve this question
我需要一个正则表达式,将只接受数字从1-45和逗号。没有字母,没有这样的字符
1
1,2
1,17,30
1,4,5,6,7,11,22,33,44...
必须没有长度限制
已关闭,该问题需要details or clarity,目前不接受回答。
**想要改进此问题?**通过editing this post添加详细信息并澄清问题。
11天前关闭
Improve this question
我需要一个正则表达式,将只接受数字从1-45和逗号。没有字母,没有这样的字符
1
1,2
1,17,30
1,4,5,6,7,11,22,33,44...
必须没有长度限制
1条答案
按热度按时间vsmadaxz1#
^
:行的开始(?: ... )+
:可出现一次或多次的非捕获组(?:([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日]|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的两位数(?:,|$)
:匹配逗号或行尾的非捕获组,
:逗号字符$
:行结束$
:行结束测试
https://regex101.com/r/6f3Ita/1
此外,第一个未输入的输入不以逗号结尾:^(?:(?:([1-9]|[1至3日][0至9日]|4[0-5]))(?:,(?=\d)|$))+$