Javascript 具有4位数字和2个可选字母的zipcode的正则表达式

Javascript 具有4位数字和2个可选字母的zipcode的正则表达式,javascript,regex,Javascript,Regex,我需要检查JavaScript中的邮政编码。规则是4位数字是必需的,末尾的2个字母是可选的。1数字和字母之间也允许有空格 示例: 1019 //true 1019PZ //true 1019 PZ //true 1019P //false (and anything else is false) 这是我到目前为止使用的正则表达式。但在这个正则表达式中,末尾的字母不是可选的,而是强制性的 var regex = /^[1-9][0-9]{3} ?(?!sa|sd|ss)[a-z]{2}$/i;

我需要检查JavaScript中的邮政编码。规则是4位数字是必需的,末尾的2个字母是可选的。1数字和字母之间也允许有空格

示例:

1019 //true
1019PZ //true
1019 PZ //true
1019P //false
(and anything else is false)
这是我到目前为止使用的正则表达式。但在这个正则表达式中,末尾的字母不是可选的,而是强制性的

var regex = /^[1-9][0-9]{3} ?(?!sa|sd|ss)[a-z]{2}$/i;

有什么建议让结尾的字母可选吗?

例如,你可以试试这个:

/^[1-9][0-9]{3} ?(?!sa|sd|ss)[a-z]{0,2}$/

只需将一个值添加到一个范围内,这意味着您的字母可以从零到两次出现。

例如,您可以尝试以下方法:

/^[1-9][0-9]{3} ?(?!sa|sd|ss)[a-z]{0,2}$/

只需将一个值添加到一个范围内,这意味着您的字母可以从零到两次出现。

[a-z]{2}
与非捕获组
(?:[a-z]{2})
后跟
,以使该组成为可选组。这样,两个字母是可选的,不能只有一个字母

^[1-9][0-9]{3} ?(?!sa|sd|ss)(?:[a-z]{2})?$

[a-z]{2}
和非捕获组
(?:[a-z]{2})
后接
,以使组成为可选组。这样,两个字母是可选的,不能只有一个字母

^[1-9][0-9]{3} ?(?!sa|sd|ss)(?:[a-z]{2})?$
以下工作:

\d{4} ?[A-z]{2}?
  • \d{4}:匹配4个必填数字
  • “空格?”:匹配数字和字母之间的一个可选空格
  • [A-z]{2}?:匹配两个可选字母
    • 以下工作:

      \d{4} ?[A-z]{2}?
      
      • \d{4}:匹配4个必填数字
      • “空格?”:匹配数字和字母之间的一个可选空格
      • [A-z]{2}?:匹配两个可选字母

      \s不仅匹配空格字符,还匹配制表符等。另外,在regexr.com上的[a-z]{2}测试周围应该有一个组,这个组围绕着[a-z]{2}?似乎不是强制性的。对于\s,您是对的,它已被更正。\s不仅匹配空格字符,还匹配制表符等等。另外,在regexr.com上的[a-z]{2}测试周围应该有一个组,这个组围绕着[a-z]{2}?似乎不是强制性的。至于\s,您是对的,它已更正。