【发布时间】:2015-07-25 12:37:29
【问题描述】:
我正在尝试构建一个正则表达式来用其他内容替换括号,在这种情况下,是一个 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");
}
它适用于简单的情况,但不会出现多次,也不会删除其他标签。周围有正则表达式大师吗?
【问题讨论】:
-
regexr.com/3bfa6 - 但不是嵌套的
-
似乎正是积极前瞻性的工作
标签: javascript jquery regex