Regexp从Javascript开始
如何将字符串匹配为以921或931开头,后跟5个任意数字?tl;dr:使用如下正则表达式:Regexp从Javascript开始,javascript,regex,Javascript,Regex,如何将字符串匹配为以921或931开头,后跟5个任意数字?tl;dr:使用如下正则表达式: RegExp("^(921|931)$\\d{5,5}$").test("93111111"); 说明: 首先,删除第一个$: var re = /^(9[23]1)\d{5}$/; alert(re.test("93111111")); $只匹配字符串的结尾,因此如果在(921 | 931)之后有一个,则正则表达式永远无法匹配。另外,请注意,您需要双重转义\,因为它在引号中,如注释中所述 实际上,您
RegExp("^(921|931)$\\d{5,5}$").test("93111111");
说明:
首先,删除第一个$
:
var re = /^(9[23]1)\d{5}$/;
alert(re.test("93111111"));
$
只匹配字符串的结尾,因此如果在(921 | 931)
之后有一个,则正则表达式永远无法匹配。另外,请注意,您需要双重转义\
,因为它在引号中,如注释中所述
实际上,您可以通过将{5,5}
简化为{5}
来进一步简化:
RegExp("^(921|931)\\d{5,5}$").test("93111111");
更好的是,使用正则表达式文本并将(921 | 931)
简化为(9[23]1)
:
这是迄今为止最干净、最容易阅读的版本。您很接近,但有一个错误。
$
表示匹配字符串的结尾。这意味着不能有多个,因为字符串只有一端。而且,{5,5}
可以简化为仅{5}
。尝试:
var re = /^(9[23]1)\d{5}$/;
alert(re.test("93111111"));
这意味着:
- ^-字符串的开头
- 然后是921或931
- 后跟5位数字
- $-字符串的结尾
“
”中使用正则表达式,你需要再次避开反斜杠。不,你只需要两个反斜杠:\\d
。另外,为什么要使用regexp构造函数和{5,5}显示笨拙的版本
首先?显示您的最终解决方案。最后,您不需要在9[23]1
@torazaburo周围加括号。对不起,从移动设备进行编辑是很棘手的。我展示了“笨拙”“版本优先,因为它们更接近OP询问的内容。@AvinashRaj我取消了您的实质性编辑。我相信你知道,这样的编辑在这里是不合适的,即使他们是正确的和有用的。我试图在OP跑步之前帮助他走路,因此在没有解释的情况下将(921 | 931)
折叠到(9[23]1)
会挫败这种意图。是的,这不是一个错误,但是\\\d
,如果不在开始处放置^
,将导致不正确的匹配。很抱歉编辑您的帖子。忘记粘贴额外的\。它已被更新。是的,我测试了它,它被称为复制/粘贴错误。这就是我在regex101中编写它并粘贴到这里的原因,我想。。。
var re = /^(9[23]1)\d{5}$/;
alert(re.test("93111111"));
RegExp("^(921|931)\\d{5}$").test("93111111");