嗨,我需要一个正则表达式的帮助..如果有可能我不确定..
输入字符串:Will you [B] meet me [A] in the [E] end
我希望[]括号内的所有字符都被其他字符替换;让我们说一段时间。并且[]括号也被相同的字符替换。
所需的输出:..........B...........A..........E.....
另一个例子:[A]red[B]elephant[C]hello[D]
输出:.A.....B..........C.......D.
如果有人可以提供帮助,那我试图解释得最好。
感谢。
答案 0 :(得分:5)
答案 1 :(得分:2)
或此模式
([^][]+(?=\]))*.
并替换w / $1.
Demo
答案 2 :(得分:1)
您可以在括号上拆分,然后替换每个其他元素中的字符:
function replace(str, rep) {
return str.split(/\[|]/).map(function(seg, i) {
return i % 2 ? seg : seg.replace(/./g, rep);
}).join(rep);
}
> replace("Will you [B] meet me [A] in the [E] end", '.')
"..........B...........A..........E....."
> replace("[A]red[Bm]elephant[Cm]hello[D]", '.')
".A.....Bm..........Cm.......D."
如果您想要支持其他类型的括号(例如{}
,想要以某种方式转换括号内的文本等),此解决方案可能更具可扩展性。
下面的解决方案尝试捕获"括号外的概念",更简单的(?)regexp含义"右括号(或字符串的开头)和左括号之间的所有内容(或者字符串结束)":
function replace(str, rep) {
return str.replace(/(^|]).*?(\[|$)/g, function(match) {
return match.replace(/./g, rep);
});
}