Исключение специальных символов в группах соответствия регулярному выражению - PullRequest
0 голосов
/ 13 октября 2018

Итак, я работаю над чем-то, у чего есть поле поиска, чтобы выделить совпадающие строки / символы из данных, чтобы достичь этого, я передаю поисковый запрос как группу совпадений regrex.например,

var pattern = new RegExp( "("+ matchThis+")" );

И чтобы исключить специальные символы, я пробовал это

var pattern = new RegExp( "[^.#&]("+ matchThis+")" );

, но это не работает.

Любые предложения о том, как достичь вышеупомянутой функциональности, небольшое объяснение очень помогло бы, поскольку я новичок в RegExp.

Ответы [ 2 ]

0 голосов
/ 13 октября 2018

Конструкция [^chars] не устраняет специальные символы, она просто не принимает их.Поэтому я думаю, что ваш ответ более соответствует тому, что вам нужно.Имейте в виду, что ваша строка кода недопустима - вызов функции replace не закрывается пареном.Также не указан второй аргумент, который может по умолчанию содержать пустую строку, но для более ясного кода я бы добавил его.Я думаю, что это должно быть:

new RegExp( "(" + searchThis.replace(/[^a-z0-9]/ig, "") + ")" );
0 голосов
/ 13 октября 2018

В конце концов я нашел способ обойти вышеуказанную проблему.

Это будет прекрасно работать, если я уберу все специальные символы из пользовательской переменной searchThis в этом случае.Это можно сделать с помощью RegExp как

var pattern = new RegExp( "("+ searchThis.replace(/[^a-z0-9]/ig, "" ) +")" );

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