正则表达式版本号验证

时间:2014-08-22 12:47:53

标签: regex

我正在尝试构建一个正则表达式,用于验证用户输入的版本号。格式为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])$

Regular expression visualization

Debuggex Demo

但它仍然允许xx之前的数字。例如:4444444444444444.15.142是可接受的输入但不应该是。请帮忙。

2 个答案:

答案 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,一次或两次