簡體   English   中英

Javascript正則表達式將括號替換為內部內容

[英]Javascript Regex to replace brackets with content inside

我正在嘗試構建正則表達式以將方括號替換為其他內容,在這種情況下為div標簽。

因此,文本:

This is a [sample] text

會成為:

This is a <div>sample</div> text

問題是,僅當找到兩個方括號時才應更換,並將其內容保留在里面。 如果僅找到一個括號,則應將其忽略。

所以

This is a [sample text

要么

This is a ] sample text

兩者都將保持原樣。

此外,它應匹配多個事件,因此:

This [is] a [sample] [text]

會成為

This <div>is</div> a <div>sample</div> <div>text</div>

最后一件事,它應該刪除(或至少忽略)嵌套的括號,因此

This [[is a ] sample [[[ tag]]]

會成為

This <div>is a</div> sample <div> tag </div>

這是我到目前為止所得到的:

function highlightWords(string){
    return string.replace(/(.*)\[+(.+)\]+(.*)/,"$1<div>$2</div>$3");
}

它可以在簡單的情況下使用,但不會多次出現,也不會刪除其他標簽。 是否有正則表達式高手?

無需在方括號之前和之后描述內容。 您必須在內容描述中禁止使用方括號,因此請使用[^\\][]+而不是.+ 不要忘記為全局替換添加g

function highlightWords(string){
    return string.replace(/\[+([^\][]+)]+/g,"<div>$1</div>");
}

注意:您無需在字符類外轉義右方括號,因為它不是特殊字符。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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