【问题标题】:Regular Expression Validation (Test) in JavaScriptJavaScript 中的正则表达式验证(测试)
【发布时间】:2009-04-20 15:26:27
【问题描述】:

似乎正则表达式问题很常见,因为每个问题似乎都适用于特定情况。话虽如此,这是我的具体情况......

我需要验证员工 ID 是两种特定格式之一。第一种格式(也是我可靠工作的格式)是(不带引号): "A000000" ,其中 "A" 可以是任何字母字符,而 "0" 可以是 0 到 9 之间的任何数字。另一个要求因为这是只需要员工 id 的前两个位置,这意味着用户可以输入“A0”并且它会验证(这个员工 id 被用于 SQL 语句的 LIKE - ...SID LIKE “A0%” . 再次,这是我通过使用...

[A-Z]{1}\d{1,6}

第二种格式给我带来了麻烦。上面的要求相同,只需要输入字符串的前两个位置,其他任何内容都是可选的,但如果输入,则必须遵守指定的格式。格式为(不含引号):“000000A”。我遇到问题的部分是确保如果输入的数字超过两位,接下来输入的三到六个值是数字,如果输入最后一个值,那么它必须是一个字符。所以有效的输入可能是......

“00”或“000”或“0000”或“00000”或“000000”或“000000A”,但不是“0”或“0A”或“00A”或“000A”等,或“ 0000000”。这是我目前所拥有的这种格式......

\d{2}(\d{1,4})?[A-Z]{0,1}

问题在于,这允许在位置 3 到 6 的任何位置输入字母字符。它不允许前两个位置有任何字母字符(好),也不允许第七个(最后一个)位置有任何数字字符(好)。只是那些可选的第三到第六个字符允许使用字母字符,这让我很伤心。

我希望这是足够的信息(或者可能不是太多)。任何帮助将不胜感激。谢谢!!!

【问题讨论】:

    标签: javascript regex


    【解决方案1】:

    试试这个表达式:

    (\d{2,5}|\d{6}[A-Z]?)
    

    这匹配 2 到 5 位数字 (\d{2,5}) 或 6 位数字和可选字母 (\d{6}[A-Z]?)。如果您想要完全匹配,请使用 ^$ 锚点来标记开始和结束:

    ^(\d{2,5}|\d{6}[A-Z]?)$
    

    【讨论】:

    • 效果很好,非常感谢(尤其是快速响应)
    • var date=/(0[1-9]|1[012])[- \/.](0[1-9]|[12][0-9]|3[ 01])[- \/.](19|20)\d\d/;对于这个表达式,如何用 ^ 和 $ 做出精确的表达式。
    【解决方案2】:

    对于第一个,{1} 是多余的:

    [A-Z][0-9]{1,6}

    第二次,也许是这样:

    \d{2}\d{0,1}\d{0,1}\d{0,1}\d{0,1}[A-Z]{0,1}

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-08-24
      • 2012-03-29
      • 1970-01-01
      • 1970-01-01
      • 2019-01-07
      • 2012-03-03
      • 2023-03-23
      • 1970-01-01
      相关资源
      最近更新 更多