我需要一个正则表达式模式,该模式将固定长度的字符串(六个字符)与前导空格匹配。空格(零或最大5)始终位于字符串的左侧。数字(1或最大6)始终在右侧。 所以:
" 4" is valid
"123456" is valid too
"12 " is not valid
" 12 " is not valid
"12 34" is not valid
" " is not valid
我尝试使用/^( ){0,5}(\d){1,6}$/
,但是它不起作用,因为它不检查字符串的总长度。我也尝试过/^( |\d){6}$/
,但是它不检查空格/数字的位置。现在,我被困住了,我知道有一个解决方案,但是我自己找不到,也无法通过搜索互联网找到。预先感谢。
答案 0 :(得分:2)
您可以使用正向先行(?=
来声明6个字符的长度:
^(?=.{6}$)[ ]{0,5}[0-9]{1,6}$
说明
^
-字符串的开头(?=.{6}$)
正向前进,断言右边直接是6个字符,并断言字符串的结尾。[ ]{0,5}[0-9]{1,6}
匹配一个空格0-5次,匹配一个数字1-6次$
字符串的结尾答案 1 :(得分:0)
这应该有效
^(?:\d{6}|\s\d{5}|\s{2}\d{4}|\s{3}\d{3}|\s{4}\d{2}|\s{5}\d{1})$
或仅用于空格
^(?:\d{6}| \d{5}| {2}\d{4}| {3}\d{3}| {4}\d{2}| {5}\d{1})$
也许有一种更优雅的方法,但它会检查空格和数字的所有组合。