Соответствующие слова в строке независимо от того, что находится между - PullRequest
0 голосов
/ 16 января 2019

Я проверяю, все ли «наркотики» «делают» в строке с той же периодичностью и в порядке, независимо от того, что находится между ними.

Например, оно должно соответствовать:

"Everyone go do drugs"

"Everyone go d[o] dru]gs!"

"Everyone go do[heyyo]dr--ugs"

Регулярное выражение не похоже на правильный путь. Как мне это сделать?

Ответы [ 2 ]

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

Что вы можете сделать, это сначала удалить все специальные символы в string перед проверкой вашего regex:

  1. Используйте .replace(/[^\w\s]/gi, ''), чтобы удалить все специальные символы из вашего string.
  2. Используйте /do.+drugs/ в качестве регулярного выражения, чтобы проверить, соответствует ли строка вашему желаемому шаблону.

Демо-версия:

let inputs = ["Everyone go do drugs",
  "Everyone go d[o] dru]gs!",
  "Everyone go do[heyyo]dr--ugs"
];

inputs = inputs.map(i => i.replace(/[^\w\s]/gi, ''));

inputs.forEach(i => {
  console.log(i + ":   " + i.match(/do.+drugs/));
});
0 голосов
/ 16 января 2019

Разве это регулярное выражение не делает то, что вы хотите?

/^.*d.*o.*d.*r.*u.*g.*s.*$/i

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

/^.*d.{0,10}o.{0,10}d.{0,10}r.{0,10}u.{0,10}g.{0,10}s.*$/i

Взгляните на https://regex101.com/, если вы не встречали его раньше. Это отличное место для изучения и экспериментов

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...