【问题标题】:Regex - has six digits, starts with 0, 1, or 2正则表达式 - 有六位数字,以 0、1 或 2 开头
【发布时间】:2016-04-07 02:59:08
【问题描述】:

我需要一个匹配包含六位数字的数字的正则表达式。第一个数字必须是 0、1 或 2。

例如 - 054654 或 198098 或 265876。

到目前为止,我得到了这个:/^\d{6}$/ - 匹配一个包含六位数字的数字。如何添加第二个要求:第一个数字必须是 0、1 或 2?

【问题讨论】:

  • 阅读正则表达式教程。
  • 懒我得到不好的代表:)

标签: javascript regex regex-negation


【解决方案1】:

你可以只使用一个字符类:

/^[012]\d{5}$/

这告诉正则表达式引擎只匹配几个字符中的一个,在本例中为012。要创建字符类,请将要匹配的字符放在方括号之间。

【讨论】:

  • 我没有投反对票,但您使用的字符类错误。我会编辑。
  • 你不明白什么是字符类以及它是如何工作的。
  • 我删除了/g 修饰符,因为需要完整的字符串匹配,并且只能匹配一次。
【解决方案2】:

因此,您编写的正则表达式 /^\d{6}$/ 仅匹配开始和结束的 6 个数字。您必须在 | 开头添加 (0|1|2)表示或,最后是 /^(0|1|2)\d{5}$/ 或 /^[012]\d{5}$/。

【讨论】:

    【解决方案3】:

    这应该做你想做的:

    /^(0|1|2)[0-9]{5}$/
    

    | 表示or

    【讨论】:

      【解决方案4】:
      /^(0|1|2)\d{5}$/ 
      

      应该可以的

      【讨论】:

      • 这也可以,谢谢!我应该使用哪个答案?
      • 您应该使用/^[012]\d{5}$/,因为具有交替的版本(如本答案所示)涉及更多的回溯,因此效率较低。但是,您可能会追求可读性,在这种情况下,您可以使用此答案中的模式。
      猜你喜欢
      • 2016-02-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-24
      • 2019-08-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多