![](/img/trans.png)
[英]regex: How to replace curly brackets in the html content except the curly brackets inside style tags?
[英]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.