我使用正则表达式将单词周围的双下划线替换为粗体标记。但如果我在一个句子中有多于一个粗体单词,那么它就不起作用。例如:
"this should be __bold__ and __this__ also".replace(/\__([^*]+)\__/g,"<b>$1</b>");
我明白了:
"this should be <span>bold__ and __this</span> also"
但我想得到这个:
"this should be <span>bold</span> and <span>this</span> also"
我的正则表达式有问题。目前,只有在句子中有一个粗体单词时,它才有效。
最佳答案
在正则表达式中,量词 +
和 *
是“贪婪的”,这意味着它们将消耗尽可能多的与被量化的表达式匹配的字符。您可以附加问号运算符 ?
将“贪婪”操作转变为惰性操作。
这将使你的表达如下:
/\__([^*]+?)\__/g
欲了解更多信息,请查看http://www.regular-expressions.info/repeat.html#lazy
关于javascript - 如何使用正则表达式将句子中的多个单词加粗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45918252/