Regexp从Javascript开始

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)之后有一个,则正则表达式永远无法匹配。另外,请注意,您需要双重转义\,因为它在引号中,如注释中所述 实际上,您

如何将字符串匹配为以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)
之后有一个,则正则表达式永远无法匹配。另外,请注意,您需要双重转义
\
,因为它在引号中,如注释中所述

实际上,您可以通过将
{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位数字
  • $-字符串的结尾

/^9[23]1\d{5}/.test('93111111')我建议将其插入regexp工作台,例如。您将在右侧看到符号“$assert position位于字符串末尾”。想想为什么你把那块钱放在那里,试着把它拿走。基本上,您需要学习如何调试自己的regexp。这并不是一个很好的解决方案,所以每次你遇到一个小问题的时候,我都想知道,投反对票是怎么回事?这似乎是一个合理的问题。一个基本的,是的,但仍然有效。“没有显示任何研究成果”和“没有用处”似乎都适用。如果你在
”中使用正则表达式,你需要再次避开反斜杠。不,你只需要两个反斜杠:
\\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");