我正在尝试构建一个正则表达式,用于验证用户输入的版本号。格式为xx.yy.zzz,允许的值为:
xx = 1-6,11,12,22
yy和zzz =任意(0-9)组合。
我想出了一些清单:
([1-6]|[11-12]|[22])+(.[0-9][0-9].[0-9][0-9][0-9])$
但它仍然允许xx之前的数字。例如:4444444444444444.15.142是可接受的输入但不应该是。请帮忙。
答案 0 :(得分:1)
你需要这个:
^([1-6]|11|12|22)\.\d{2}\.\d{3}$
您未指定匹配整个字符串的开头(^)和结束($)锚点。此外,您的角色类如[11-12]
和[22]
不符合您的想法。使用方括号指定的每个类都匹配一个字符,因此[22]
只匹配“2”。
此外,你没有逃脱点,所以他们真的匹配任何角色,而不仅仅是一个点。
答案 1 :(得分:0)
我认为这就是你所追求的目标:
^([1-6]|1[12]|22)\.[0-9]{1,2}\.[0-9]{1,2}$
^ =开始
(|)=或匹配
[1-6] = 1-6,一次
1 [12] = 11或12
22 = 22
\。 =点
[0-9] {1,2} = 0-9,一次或两次