Javascript-带字符串模板后跟4位数字的正则表达式?

时间:2019-01-23 07:05:24

标签: javascript regex string replace

美好的一天。我想检测<a>标记中的网址字符串

<a href="http://virtualweb.test/en/?post_type=tribe_events&p=3642">Link</a>

是否与模式匹配:?post_type=tribe_events&p=####(#### = 4位数字)

我正在编写一些Jquery代码来检测表达式,但是控制台抛出错误:

  

无效的正则表达式:/ ^(?)post_type = tribe_events&p = ^(d {4})/:   无效的组

var str = $(a).attr("href");
var regexEx  = /^(?)post_type=tribe_events&p=^(d{4})/;
  var ok = regexEx.exec(str);
  console.log(ok);

我不擅长正则表达式,所以如果有帮助我会很感激。

2 个答案:

答案 0 :(得分:1)

正则表达式中有几个问题。

  • 您需要从表示字符串开头的正则表达式中删除^,在您的情况下,您的字符串实际上并不是从?开始,而是在字符串中间。
  • 您需要转义?,因为它在正则表达式中具有特殊含义,即零个字符或一个字符出现一次。
  • 您需要在^之后删除第二个p=
  • 您需要写\d而不是d来代表数字。
  • 此外,除非确实需要它们,否则无需将?\d{4}分组。

您更正的正则表达式变为

\?post_type=tribe_events&p=\d{4}

Demo

答案 1 :(得分:0)

如果测试确实是您想要的,我想正确的语法应该是:

/^\?post_type=tribe_events&p=\d{4}/