繁体   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