【发布时间】:2011-06-13 02:31:59
【问题描述】:
我需要一个至少需要一位数字且最多六位的正则表达式。
我已经解决了这个问题,但它们似乎都不起作用。
^[0-9][0-9]\?[0-9]\?[0-9]\?[0-9]\?[0-9]\?$
^[0-999999]$
还有什么建议吗?
【问题讨论】:
我需要一个至少需要一位数字且最多六位的正则表达式。
我已经解决了这个问题,但它们似乎都不起作用。
^[0-9][0-9]\?[0-9]\?[0-9]\?[0-9]\?[0-9]\?$
^[0-999999]$
还有什么建议吗?
【问题讨论】:
^[0-9]{1,6}$ 应该这样做。我不知道 VB.NET 是否足够好,不知道那里是否相同。
例如,看看Wikipedia。
【讨论】:
您可以使用范围限定符{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 重复),而是按字面意思对待.
要修复它,只需删除 \ 即可。
基于量词的正则表达式更短、更易读,并且可以轻松扩展到任意位数。
你的第二个正则表达式:
^[0-999999]$
相当于:
^[0-9]$
匹配只有一位数字的字符串。它们是等价的,因为字符类 [aaaab] 与 [ab] 相同。
【讨论】:
[0-9]{6},并在需要时添加锚点。
^\d{1,6}$
........
【讨论】:
\d 和[0-9] 并不总是相同的(see this post),^[0-9]{1,6}$ 解决方案可能更可取。
你可以试试
^[0-9]{1,6}$
它应该可以工作。
【讨论】:
\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
【讨论】:
/^[0-9][0-9][0-9][0-9]$/
仅输入 4 位数字
【讨论】: