6位正则表达式

fra*_*ara 51 regex vb.net

我需要一个需要至少一位数和最大六位数的正则表达式.

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

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

^[0-999999]$
Run Code Online (Sandbox Code Playgroud)

还有其他建议吗?

cod*_*ict 119

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

^[0-9]{1,6}$
Run Code Online (Sandbox Code Playgroud)

说明:

^     : 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
Run Code Online (Sandbox Code Playgroud)

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

你几乎接近正则表达式:

^[0-9][0-9]\?[0-9]\?[0-9]\?[0-9]\?[0-9]\?$
Run Code Online (Sandbox Code Playgroud)

既然你已逃过了?通过与它前面\?是没有更多的充当正则表达式的元字符(01重复),但已在字面上的处理.

要解决它,只需删除它\,你就在那里.

在rubular上看到它.

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

你的第二个正则表达式:

^[0-999999]$
Run Code Online (Sandbox Code Playgroud)

相当于:

^[0-9]$
Run Code Online (Sandbox Code Playgroud)

它匹配恰好一位数的字符串.它们是等价的,因为一个字符类[aaaab]是相同的[ab].

  • 正如标题所示,可以添加注释,以匹配 6 位数字,应使用“[0-9]{6}”,并根据需要添加锚点。 (2认同)

Luk*_*keH 21

  ^\d{1,6}$
Run Code Online (Sandbox Code Playgroud)

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

  • 由于`\ d`和`[0-9]`并不总是相同[(见本文)](http://stackoverflow.com/q/890686/1447415),`^ [0-9] { 1,6} $`解决方案可能更可取. (5认同)

Jam*_*mes 11

你可以试试

^[0-9]{1,6}$
Run Code Online (Sandbox Code Playgroud)

它应该工作.