我正在尝试编写一些 JavaScript 正则表达式来用真正的 html 标签替换用户输入的标签,所以[b]
会变成<b>
等等。我正在使用的 RegEx 看起来像这样
var exptags = /\[(b|u|i|s|center|code){1}]((.){1,}?)\[\/(\1){1}]/ig;
使用以下 JavaScript
s.replace(exptags,"<$1>$2</$1>");
这适用于单个嵌套标签,例如:
[b]hello[/b] [u]world[/u]
但是如果标签相互嵌套,它将只匹配外部标签,例如
[b]foo [u]to the[/u] bar[/b]
这只会匹配b
标签。我怎样才能解决这个问题?我应该循环直到起始字符串与结果相同吗?我也感觉((.){1,}?)
模式不对?
谢谢