6位正则表达式

时间:2011-01-21 11:47:15

标签: regex vb.net

我需要一个至少需要一位数且最多六位的正则表达式。

我已经解决了这个问题,但它们似乎都不起作用。

^[0-9][0-9]\?[0-9]\?[0-9]\?[0-9]\?[0-9]\?$

^[0-999999]$

还有其他建议吗?

6 个答案:

答案 0 :(得分:110)

您可以使用范围量词{min,max}指定最少1位数字和最多6位数字:

^[0-9]{1,6}$

说明:

^     : Start anchor
[0-9] : Character class to match one of the 10 digits
{1,6} : Range quantifier. Minimum 1 repetition and maximum 6.
$     : End anchor

为什么你的正则表达式不起作用?

你几乎接近正则表达式:

^[0-9][0-9]\?[0-9]\?[0-9]\?[0-9]\?[0-9]\?$

由于您通过?前面的\转义,?不再充当正则表达式元字符(0或{{ 1}}重复)但正在按字面意思对待。

要解决此问题,只需删除1即可。

See it on rubular

基于量词的正则表达式更短,更易读,可以轻松扩展到任意数量的数字。

你的第二个正则表达式:

\

相当于:

^[0-999999]$

匹配恰好一位数的字符串。它们是等效的,因为字符类^[0-9]$ [aaaab]相同。

答案 1 :(得分:19)

  ^\d{1,6}$

....................

答案 2 :(得分:9)

你可以尝试

^[0-9]{1,6}$

它应该有用。

答案 3 :(得分:3)

^[0-9]{1,6}$应该这样做。我不知道VB.NET是否足以知道它是否相同。

例如,请查看Wikipedia

答案 4 :(得分:0)

\b\d{1,6}\b

说明

\b    # word boundary - start
\d    # any digits between 0 to 9 (inclusive)
{1,6} # length - min 1 digit or max 6 digits
\b    # word boundary - end

答案 5 :(得分:-1)

/^[0-9][0-9][0-9][0-9]$/

仅输入 4 位数字