簡體   English   中英

識別正則表達式中的多個打開標簽,正文和關閉標簽集

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM