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

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

https://regex101.com/r/z7mor0/1

const rt = "8.469.505-k"
const ex = '/\b(\w*'+ rt +'\w*)\b/g'

const cleanT = text.replace(/ /g, "")
if( cleanT.match(new RegExp(ex, 'g')) ){
  console.log("si encontro")
}

Ответы [ 2 ]

0 голосов
/ 03 мая 2019

Проблема здесь в том, что точки имеют особое значение в регулярных выражениях. Попробуйте определить "rt" следующим образом: "const rt = '8 \ .469 \ .505-k'". Вы можете использовать ".replace ()", чтобы программно экранировать точки с дополнительной косой чертой, чтобы обрабатывать различные значения для "rt".

0 голосов
/ 03 мая 2019

Строка не должна включать глобальный флаг. У него не должно быть начала и конца регулярного выражения. Он также должен иметь \ escape

const ex = '\\b(\\w*'+ rt +'\\w*)\\b'

Также вам нужно убедиться, что у rt нет ничего, что сделало бы reg exp недействительным. Как . будет соответствовать любому персонажу.

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