正则表达式 - 有六位数字,以 0、1 或 2 开头
Posted
技术标签:
【中文标题】正则表达式 - 有六位数字,以 0、1 或 2 开头【英文标题】:Regex - has six digits, starts with 0, 1, or 2 【发布时间】:2016-04-07 02:59:08 【问题描述】:我需要一个匹配包含六位数字的数字的正则表达式。第一个数字必须是 0、1 或 2。
例如 - 054654 或 198098 或 265876。
到目前为止,我得到了这个:/^\d6$/
- 匹配一个包含六位数字的数字。如何添加第二个要求:第一个数字必须是 0、1 或 2?
【问题讨论】:
阅读正则表达式教程。 懒我得到不好的代表:) 【参考方案1】:你可以只使用一个字符类:
/^[012]\d5$/
这告诉正则表达式引擎只匹配几个字符中的一个,在本例中为0
、1
或2
。要创建字符类,请将要匹配的字符放在方括号之间。
【讨论】:
我没有投反对票,但您使用的字符类错误。我会编辑。 你不明白什么是字符类以及它是如何工作的。 我删除了/g
修饰符,因为需要完整的字符串匹配,并且只能匹配一次。【参考方案2】:
因此,您编写的正则表达式 /^\d6$/ 仅匹配开始和结束的 6 个数字。您必须在 | 开头添加 (0|1|2)表示或,最后是 /^(0|1|2)\d5$/ 或 /^[012]\d5$/。
【讨论】:
【参考方案3】:这应该做你想做的:
/^(0|1|2)[0-9]5$/
|
表示or
。
【讨论】:
【参考方案4】:/^(0|1|2)\d5$/
应该可以的
【讨论】:
这也可以,谢谢!我应该使用哪个答案? 您应该使用/^[012]\d5$/
,因为具有交替的版本(如本答案所示)涉及更多的回溯,因此效率较低。但是,您可能会追求可读性,在这种情况下,您可以使用此答案中的模式。以上是关于正则表达式 - 有六位数字,以 0、1 或 2 开头的主要内容,如果未能解决你的问题,请参考以下文章