[英]Recognizing Multple Sets of Opening Tag, Body, and Closing Tag in Regex
我正在嘗試為我的論壇開發將[bold] ... [/ bold]轉換為<b> ... </ b>的功能。 截至目前,當僅存在一組[bold] ... [/ bold]時,此方法可以完美工作,但是,每當添加第二個[bold] ... [/ bold]時,正則表達式都不會識別出第一個[bold]的結尾第二。
例如,如果我要輸入“ [bold]你好[/ bold],你今天[bold]今天[/ bold]怎么樣?”,我應該得到這個:
你好 ,你今天好嗎?
但是,我實際上得到的是:
您好[/ bold],您今天好嗎?
下面是我當前的功能:
function formatBolds(str) {
output = output.replace(/(\[bold\])(.*)(\[\/bold\])/g, "<b>$2</b>");
}
您只需要將.*
更改為非貪婪的.*?
function formatBolds(str) {
output = output.replace(/(\[bold\])(.*?)(\[\/bold\])/g, "<b>$2</b>");
}
.*
的問題在於它的貪婪性並嘗試匹配盡可能多的字符,包括第一個[/bold]
和隨后的[bold]
直到最后一個[/bold]
。 ?
使其不貪心,並以最小長度匹配中止匹配 我認為使用非貪婪匹配應該可以解決您的問題:
(\[bold\])(.*?)(\[\/bold\])
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.