具有固定长度、前导空格和数字的Javascript regexp模式

具有固定长度、前导空格和数字的Javascript regexp模式,javascript,regex,Javascript,Regex,我需要一个正则表达式模式,该模式匹配具有前导空格的固定长度字符串(六个字符)。空格(零或最大5)始终位于字符串的左侧。数字(1或最多6)始终位于右侧。 因此: 我尝试了/^(){0,5}(\d){1,6}$/,但它不起作用,因为它不检查字符串的总长度。我还尝试了/^(|\d){6}$/,但它没有检查空格/数字的位置。现在我被困住了,我知道有一个解决办法,但我自己也找不到,搜索互联网也找不到。提前谢谢。这应该行得通 ^(?:\d{6}|\s\d{5}|\s{2}\d{4}|\s{3}\d{3}|\

我需要一个正则表达式模式,该模式匹配具有前导空格的固定长度字符串(六个字符)。空格(零或最大5)始终位于字符串的左侧。数字(1或最多6)始终位于右侧。 因此:

我尝试了
/^(){0,5}(\d){1,6}$/
,但它不起作用,因为它不检查字符串的总长度。我还尝试了
/^(|\d){6}$/
,但它没有检查空格/数字的位置。现在我被困住了,我知道有一个解决办法,但我自己也找不到,搜索互联网也找不到。提前谢谢。

这应该行得通

^(?:\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})$

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

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

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

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

谢谢,它解决了问题。你能澄清一下需要两美元(美元符号)吗?这对我来说似乎是多余的,尤其是第一个。谢谢。@Mzm在第一部分
^(?=.{6}$)
您声明在开始之后必须正好有6个字符后跟字符串的结尾。如果您将
$
省略,则匹配5倍空格后跟6倍数字也将匹配。
^(?=.{6}$)[ ]{0,5}[0-9]{1,6}$