Regex only number and comma [关闭]

g0czyy6m  于 2023-04-13  发布在  其他
关注(0)|答案(1)|浏览(99)

已关闭,该问题需要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...

必须没有长度限制

vsmadaxz

vsmadaxz1#

^(?:(?:([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日]|4[0-5]))(?:,|$))+$

  1. ^:行的开始
  2. (?: ... )+:可出现一次或多次的非捕获组
  • (?:([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的两位数
  1. (?:,|$):匹配逗号或行尾的非捕获组
  2. ,:逗号字符
  3. $:行结束
  4. $:行结束

测试

https://regex101.com/r/6f3Ita/1
此外,第一个未输入的输入不以逗号结尾:^(?:(?:([1-9]|[1至3日][0至9日]|4[0-5]))(?:,(?=\d)|$))+$

相关问题