#javascript #regex
#javascript #регулярное выражение
Вопрос:
Я использую a replace
, чтобы обернуть все слова в строку с <a/>
тегами, но если слово содержит тире или дефис, оно разбивает слово, например: hello-there
становится hello - <a>there</a>
.
Это то, что я использую сейчас:
string.replace(/b(w )b/g, '<a href="javascript:void(0)">$1</a>');
Кроме того, как я могу удалить точки или запятые из слов?
Ответ №1:
w
в регулярных выражениях не используются тире ( -
), поэтому ваше соответствие явно исключит их из вашего переноса слов. Другими словами, учитывая
hello-there
ваше регулярное выражение увидит:
word(hello) non-word(-) word(there)
Попробуйте это:
replace(/b([w-]) b/, ...)
явно включать тире в класс «это часть слова».
Комментарии:
1. Обратите внимание на «слова-буквы».replace(/b([w-] )b/g, «) //возвращает «» «слова-«.replace(/b([w-] )b/g, «) // возвращает «-» потому что символ перед тире — это буква.
Ответ №2:
<script type="text/javascript">
var str="hello-there";
document.write(str.replace(/b([w -] )b/g,'<a href="javascript:void(0)">$1</a>')
);
</script>
Комментарии:
1. Примечание:
внутри символьного класса будет соответствовать буквальному
символу — он не действует как квантор.