регулярное выражение javascript должно заканчиваться допустимым соответствием - PullRequest
0 голосов
/ 28 января 2019

Мне нужно определить, заканчивается ли ввод в правильном формате, я написал это регулярное выражение снова это

var inp_values = '<@448746017987231756> 3 <@533932209300832266> 5 <@440684023463804938> 7'

var res = inp_values.match(/<@(\d*)> \d*/g)
console.log(res);
[ '<@448746017987231756> 3',   '<@533932209300832266> 5',   '<@440684023463804938> 7' ]

, но я хочу, чтобы он возвращал значение false, когда значениеравно

var inp_values = '<@448746017987231756> 3 <@533932209300832266> 5 <@440684023463804938> 7 @alphatext 5'

Итак, я попытался добавить $ к регулярному выражению

 inp_values.match(/<@(\d*)> \d*$/g);

, но он возвращает только одно значение для первого сценария

Ответы [ 2 ]

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

Если вам нужно проверить, что строка состоит из вашего шаблона, вы можете сопоставить его с первым значением, а затем повторить его с предшествующим пробелом.

Если одно значение также является значением, его можно повторить 0+ раз, используя группу без захвата (?: <@(\d*)> \d*)*.

Если это произойдет хотя бы 2 раза, вы можете повторить это 1+ раз.

<@(\d*)> \d*(?: <@(\d*)> \d*)*$

См. Демонстрационную версию regex101

[
  "<@448746017987231756> 3 <@533932209300832266> 5 <@440684023463804938> 7",
  "<@448746017987231756> 3 <@533932209300832266> 5 <@440684023463804938> 7 @alphatext 5"
].forEach(s => {
  console.log(/<@(\d*)> \d*(?: <@(\d*)> \d*)*$/.test(s) + " => " + s);
});
0 голосов
/ 28 января 2019

Вы можете использовать функцию RegEx.prototype.test(), которая вернет true, если регулярное выражение найдет 1 или более положительных совпадений, или false, если результатов не найдено.

Функция String.prototype.match() ищетсоответствует строке и возвращает массив результатов.

var regEx = /<@(\d*)> \d*$/g;

var inp_values = '<@448746017987231756> 3 <@533932209300832266> 5 <@440684023463804938> 7'
console.log("inp_values test return: " + regEx.test(inp_values));
console.log("inp_values match return: " + inp_values.match(regEx));

var inp_values2 = '<@448746017987231756> 3 <@533932209300832266> 5 <@440684023463804938> 7 @alphatext 5'
console.log("inp_values2 test return: " + regEx.test(inp_values2));
console.log("inp_values2 match return: " + inp_values2.match(regEx));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...