Javascript正则表达式加粗多个字符串

时间:2015-06-25 22:10:36

标签: javascript regex

我正在尝试在字符串中加粗以下单词,但我无法正确理解语法,有人可以解释如何使用多个关键字来执行此操作。

reg = /(^|\s) vomiting | foodpoisoning | food poisoning | poisoned | diarrhoea | diarrhea | sick | puking | puked (\s|$)/ig ;

review = review.replace((reg,'$1<b>$2</b>$3'));

1 个答案:

答案 0 :(得分:2)

你需要这样的东西:

&#13;
&#13;
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;
&#13;
&#13;

您的正则表达式包含不必要的空格,因为我看到您尝试将字边界与它们以及(^|\s)(\s|$)进行匹配。字边界与\b匹配。此外,我将备选方案放入捕获组中,以便将两侧的\b应用于匹配的单词的两侧。

(?!<\/b>)前瞻将确保我们不会将粗体标签添加到已加粗的字词中。

此外,您可以使用?量词来缩短列表。

如果匹配不必区分大小写,请将/g替换为正则表达式末尾的/gi