我正在尝试在字符串中加粗以下单词,但我无法正确理解语法,有人可以解释如何使用多个关键字来执行此操作。
reg = /(^|\s) vomiting | foodpoisoning | food poisoning | poisoned | diarrhoea | diarrhea | sick | puking | puked (\s|$)/ig ;
review = review.replace((reg,'$1<b>$2</b>$3'));
答案 0 :(得分:2)
你需要这样的东西:
var re = /\b(vomiting|food ?poisoning|poisoned|diarrho?ea|sick|puking|puked)\b(?!<\/b>)/g;
var str = 'There was some sick man, sick child and an already <b>sick</b> woman.';
var subst = '<b>$1</b>';
alert(str.replace(re, subst));
&#13;
您的正则表达式包含不必要的空格,因为我看到您尝试将字边界与它们以及(^|\s)
和(\s|$)
进行匹配。字边界与\b
匹配。此外,我将备选方案放入捕获组中,以便将两侧的\b
应用于匹配的单词的两侧。
(?!<\/b>)
前瞻将确保我们不会将粗体标签添加到已加粗的字词中。
此外,您可以使用?
量词来缩短列表。
如果匹配不必区分大小写,请将/g
替换为正则表达式末尾的/gi
。