固定长度,前导空格和数字的JavaScript正则表达式模式

时间:2019-03-20 15:27:54

标签: javascript regex

我需要一个正则表达式模式,该模式将固定长度的字符串(六个字符)与前导空格匹配。空格(零或最大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}$/,但是它不检查空格/数字的位置。现在,我被困住了,我知道有一个解决方案,但是我自己找不到,也无法通过搜索互联网找到。预先感谢。

2 个答案:

答案 0 :(得分:2)

您可以使用正向先行(?=来声明6个字符的长度:

^(?=.{6}$)[ ]{0,5}[0-9]{1,6}$

说明

  • ^-字符串的开头
  • (?=.{6}$)正向前进,断言右边直接是6个字符,并断言字符串的结尾。
  • [ ]{0,5}[0-9]{1,6}匹配一个空格0-5次,匹配一个数字1-6次
  • $字符串的结尾

Regex demo

答案 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})$

也许有一种更优雅的方法,但它会检查空格和数字的所有组合。