замените символ '&' на reg exp в javascript - PullRequest
0 голосов
/ 19 октября 2018

Я хотел бы заменить символ "&", наряду с символами, которые могут мешать синтаксису URL.

До сих пор я пытался:

myText = myText.replace(/[^a-zA-Z0-9-. ]/g,'');

, который, вероятно, работает для другихсимволы (не проверял), но не понимал «&», что меня больше всего волнует, поэтому я добавил в комбо следующую строку, но также не избавился от &:

myText = myText.replace(/&/g,'');

но не работает, как я могу заменить этот специальный символ?

РЕШЕНИЕ:

Код читал & при доставке, а не &, поэтомуя должен был сделать:

myText = myText.replace(/&/g,'');

и это работает.

SNIPPET:

var text = "god & damn it";
console.log(text.replace(/&|&/g,''));

Ответы [ 2 ]

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

Согласно вашим комментариям, вы пытаетесь заменить это &, html-кодировку символа &.

С помощью lodash вы можете _.unescape строка перед заменой:

myText = _.unescape(myText).replace(/&/g, '');

Таким образом вы обрабатываете оба случая: & и &.Затем, если вам нужно добавить этот текст в html, вы должны _.escape вернуть его назад, чтобы предотвратить странные побочные эффекты: _.escape(myText);.

Без lodash вы можетепросто найдите оба в вашем регулярном выражении:

myText = myText.replace(/&|&/g, '');

Но этот метод может иметь свои побочные эффекты, когда присутствуют другие специальные символы, потому что он также удаляет символ &, например, эту строку"Three is > than two & one" будет выглядеть так "Three is gt; than two one" (обратите внимание на уродливое gt; в середине)

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

console.log("m&yText".replace(/\&/g,''))

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

...