我需要一个需要至少一位数和最大六位数的正则表达式.
我已经解决了这个问题,但它们似乎都不起作用.
^[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)
既然你已逃过了?通过与它前面\的?是没有更多的充当正则表达式的元字符(0或1重复),但已在字面上的处理.
要解决它,只需删除它\,你就在那里.
基于量词的正则表达式更短,更易读,可以轻松扩展到任意数量的数字.
你的第二个正则表达式:
^[0-999999]$
Run Code Online (Sandbox Code Playgroud)
相当于:
^[0-9]$
Run Code Online (Sandbox Code Playgroud)
它匹配恰好一位数的字符串.它们是等价的,因为一个字符类[aaaab]是相同的[ab].
Luk*_*keH 21
^\d{1,6}$
Run Code Online (Sandbox Code Playgroud)
....................