代码之家  ›  专栏  ›  技术社区  ›  Csanchez

用于验证2个字母数字的正则表达式

  •  0
  • Csanchez  · 技术社区  · 6 年前

    我有以下模式来验证字符串,它必须验证 4个字母 , 6个数字 , 6个字母 2字母数字 ,但以我目前的模式,我无法得到有效的测试

    Pattern.compile("[A-Za-z]{4}\\d{6}\\w{6}\\[A-ZÑa-zñ0-9\\- ]{2}");
    

    我觉得我的模式不对,因为我不是舒尔 [A-ZÑa-zñ0-9\\- ]{2}

    你能帮帮我吗?

    2 回复  |  直到 6 年前
        1
  •  1
  •   Paolo    6 年前

    您可以使用模式:

    ^[a-zA-Z]{4}[0-9]{6}[a-zA-Z]{6}[a-zA-Z0-9]{2}$
    

    现场查看 here . 在你的表达中 \w+ ,它不仅匹配数字和字母字符,还匹配下划线 _ .

        2
  •  1
  •   Joaquin    6 年前

    你的regex上有一些东西。

    • 在数字和单词匹配中有多余的反斜杠。改变 \\d \d \\w \w .

    • 这个 \\ 不需要。

    • 您的结束正则表达式是无效语法。只需移除 "\\- " 比特。

    你也可以瘦身你最初的部分 \西 而不是 [A-Za-z] . 所以,你的新regex应该看起来像:

    "\w{4}\d{6}\w{6}[A-ZÑa-zñ0-9]{2}"
    

    这是因为在最后两个字母数字中,只有非ascii字符是和±是可以的。