我正在尝试使用正则表达式在反馈选项文本中找到相似的字符串,以使其变为粗体。反馈选项列表示例。


您的风险很低。
您的风险从低到中等。
您的风险是中等的。
您的风险为中等到高。
您的风险很高。


下面的代码在Jquery中有效,但是它只找到第一个匹配的单词,因此找到了“ low”,“ moderate”和“ high”,但随后不匹配单词组“ low to medium”或“ moderate to high”。如何确保在不退出第一个找到的单词的正则表达式的情况下查找每个选项?

var feedBackRiskTxt = currentFeedbackNode.find('Risk[result='+choice+']').text().replace(/(\blow|low to moderate|moderate|moderate to high|high\b.)/, "<span>$1</span>");


预先感谢您,阿提拉

最佳答案

在我看来,您需要在正则表达式上使用“ g”选项,以便它将替换找到的所有匹配项。

另外,如果您想在每个匹配项的两端都使用单词边界,并且尾随匹配项也不能正常工作,则您不能正确使用\ b字符。您可以使用它来解决这些问题:

var feedBackRiskTxt = currentFeedbackNode.find('Risk[result='+choice+']').text().replace(/\b(low|low to moderate|moderate|moderate to high|high)\./g, "<span class='bold'>$1.</span>");


您可以在这里看到它的工作:http://jsfiddle.net/jfriend00/Y8Csf/

10-04 21:21