正则将[a]123[/a]替换为<a>123</a>

如题, 正则将字符串:

zzzzzzz[a]123[/a],zzz[a]123[/a]

替换为:

zzzzzzz<a>123</a>,zzz<a>123</a>
阅读 4.5k
7 个回答
'zzzzzzz[a]123[/a],zzz[a]123[/a]'.replace(/\[(.+?)\]/g, function(s, tag){
    return '<' + tag + '>'
})

如果用python的话,都不需要正则:

src = 'zzzzzzz[a]123[/a],zzz[a]123[/a]'

# 1
print(src.replace('[','<').replace(']','>'))

# 2
intab = "[]"
outtab = "<>"
trantab = str.maketrans(intab, outtab)
print(src.translate(trantab))

'zzzzzzz[a]123[/a],zzz[a]123[/a]'.replace(/\[(.*?)\]/g,'<$1>')
'zzzzzzz[a]123[/a],zzz[a]123[/a]'.replace(/\[([^\[\]]*?)\]/g,'<$1>')

直接替换更简单吧、不就两个符号
str.replace('[','<').replace(']','>')

如果只是简单的把[替换成<,]替换成>。可以用下面方案。

var str = 'zzzzzzz[a]123[/a],zzz[a]123[/a]';
var result = str.replace(/(\[|\])/g,($0 => {
    var escapeChars = {
        '[': '<',
        ']': '>',
    }
    console.log($0);
    return escapeChars[$0];
})
console.log(result);
// 也可以加上全局匹配写成跟二楼python的回答类似。

另外:@sarike 的正则可以优化为/\[([^\[\]]*)\]/

最简单就是这样了吧

'zzzzzzz[a]123[/a],zzz[a]123[/a]'.replace(/\[/g,'<').replace(/\]/g,'>')
'zzzzzzz[a]123[/a],zzz[a]123[/a]'.replace(/\[([^\[\]]+)?\]/g,'<$1>')
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题