Javascript - Регулярное выражение с шаблоном строки, за которым следует 4-значный номер? - PullRequest
0 голосов
/ 23 января 2019

Добрый день. Я хочу обнаружить строку URL в теге <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 голосов
/ 23 января 2019

В вашем регулярном выражении есть пара проблем.

  • Вам нужно удалить ^ из вашего регулярного выражения, которое обозначает начало строки, и в вашем случае ваша строка фактически не начинается с ? и находится в середине строки.
  • Вам нужно экранировать ?, поскольку оно имеет особое значение в регулярном выражении, которое равно нулю или одному вхождению символа.
  • Вам нужно удалить второй ^ после p=, который не нужен
  • Вам нужно написать \d, а не просто d для представления числа.
  • Также вам не нужно группировать ? и \d{4}, если они вам действительно не нужны.

Вы исправили регулярное выражение,

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

Демо

0 голосов
/ 23 января 2019

Если тест действительно то, что вы хотите, я думаю, правильный синтаксис будет:

/^\?post_type=tribe_events&p=\d{4}/
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...