Используйте регулярное выражение, чтобы найти слова, которые соответствуют набору набора слов / кодов во входной строке - PullRequest
0 голосов
/ 03 апреля 2020

Я пытаюсь использовать метод замены строки JavaScript для удаления любых символов или слов из пользовательского ввода, которые не соответствуют набору слов или кодов в пользовательском шаблоне. Например, если у меня есть шаблон %PT!!@@ и вход %PT1234!!test@@, я хочу удалить все, что не соответствует «% PT», «!!» а также '@@'. Это означает, что «1234» и «тест» будут удалены из строки. Я видел похожие вопросы, используя регулярное выражение типа (?!(%PT|!!|@@)), но это не работает.

Ответы [ 2 ]

1 голос
/ 03 апреля 2020

Итак, у вас есть строка %PT1234!!test@@, и вам нужно удалить любой текст, который не соответствует подстрокам %PT, !! и @@.

Вы можете захватить эти строки (или шаблоны), которые вы хотите сохранить и просто сопоставить все остальное. Затем замените на обратную ссылку на Группу 1, чтобы восстановить это значение в результате.

Или вы можете просто сопоставить то, что вам нужно, и затем объединить найденные значения.

См. JS демо:

console.log(
  "%PT1234!!test@@".replace(/(%PT|!!|@@)|[\s\S]/g, '$1')
) // => %PT!!@@
console.log(
  "%PT1234!!test@@".match(/%PT|!!|@@/g).join("")
) // => %PT!!@@

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

Подробности

  • (%PT|!!|@@) - группа захвата 1: любое из перечисленных значений: %PT, !! или @@
  • | - или
  • [\s\S] - любой символ.
0 голосов
/ 03 апреля 2020

Для вашего случая использования вы можете использовать это регулярное выражение: /[^%PT!{2}@{2}]/g

Быстрый пример: https://jsfiddle.net/mzsavre5/

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