Количество количества соответствий regex в JavaScript

Да, почтовые данные в безопасности. Но происхождение этих данных не так. Таким образом, кто-то может заставить пользователя с помощью JS войти на ваш сайт, просматривая веб-страницу злоумышленника.

Чтобы предотвратить это, django отправит случайный ключ как в файле cookie, так и в данных формы. Затем, когда пользователи отправляют сообщения POST, он проверяет, идентичны ли два ключа. В случае обмана пользователя сторонний веб-сайт не может получить файлы cookie вашего сайта, что приводит к ошибке аутентификации.

85
задан Max 2 January 2016 в 11:02
поделиться

1 ответ

tl; dr: Generic Pattern Counter

// THIS IS WHAT YOU NEED
const count = (str) => {
  const re = /YOUR_PATTERN_HERE/g
  return ((str || '').match(re) || []).length
}

Для тех, кто пришел сюда и ищет общий способ подсчета количества вхождений шаблона регулярного выражения в строке, и не хочет этого чтобы выйти из строя, если вхождений нет, этот код - то, что вам нужно. Вот демонстрация:

 / * * Пример * / const count = (str) => {const re = / [az] {3} / g return ((str || '') .match (re) || []). length} const str1 = 'abc, def, ghi' const str2 = 'ABC, DEF, GHI' console.log («'$ {str1}' содержит $ {count (str1)} вхождений шаблона» / [az] {3} / g'`) console.log (`'$ {str2}' содержит $ {count (str2)} вхождений шаблона '/ [az] {3} / g'`) 

Исходный Ответ

Проблема с вашим исходным кодом заключается в том, что вам не хватает глобального идентификатора :

>>> 'hi there how are you'.match(/\s/g).length;
4

Без части регулярного выражения g оно будет соответствовать только первому вхождению и остановится на нем.

Также обратите внимание, что ваше регулярное выражение будет считать последовательные пробелы дважды:

>>> 'hi  there'.match(/\s/g).length;
2

Если это нежелательно, вы можете сделать это:

>>> 'hi  there'.match(/\s+/g).length;
1
173
ответ дан 24 November 2019 в 08:16
поделиться
Другие вопросы по тегам:

Похожие вопросы: