Javascript: regex для замены слов внутри текста, а не части слов
Мне нужно регулярное выражение для замены слов внутри текста, а не части слов.
Мой код, который заменяет 'de' также, когда его часть слова:
str="de degree deep de";
output=str.replace(new RegExp('de','g'),'');
output==" gree ep "
Результат, который мне нужен: " degree deep "
Что должно быть регулярным выражением для получения правильного вывода?
Ответы
Ответ 1
str.replace(/\bde\b/g, '');
Обратите внимание, что
RegExp('\\bde\\b','g') // regex object constructor (takes a string as input)
и
/\bde\b/g // regex literal notation, does not require \ escaping
- одно и то же.
\b
обозначает "границу слова". Граница слова определяется как позиция, в которой символ слова следует за символом, отличным от слова, или наоборот. Символ слова определяется как [a-zA-Z0-9_]
в JavaScript.
Позиции начала и конца строки также могут быть границами слов, если они следуют или предшествуют символу слова соответственно.
Помните, что понятие символа слова не очень хорошо работает вне царства английского языка.
Ответ 2
str="de degree deep de";
output=str.replace(/\bde\b/g,'');
Ответ 3
Вы можете использовать reg ex \bde\b
.
Здесь вы можете найти рабочий образец здесь.
Регулярный символ \b
действует как разделитель слов. Вы можете найти здесь .
Ответ 4
Вы должны заключить свои символы поиска между \b
:
str="de degree deep de";
output=str.replace(/\bde\b/g,'');
Ответ 5
Вы можете использовать границу слова как примечание Аруна и Томалака.
/\ BDE\б/г
или вы можете использовать пробел
/де\с/г
http://www.regular-expressions.info/charclass.html