我有以下字符串:
[5][Sport][one]
我想用以下字符串完全替换它:
<br />
我尝试了以下正则表达式,但它给了我方括号[5,Sport,one]
的内容作为列表
/[^[\]]+(?=])/g
答案 0 :(得分:0)
我不确定你的期望是什么,因为你没有给出你想要的输出......
所以你的意思是:
js> s = "[5][Sport][one]"
js> s.replace(/\]\[|\[|\]/g,"<br/>")
"<br/>5<br/>Sport<br/>one<br/>"
你可以使用.match
来实现,我想你可能已尝试过:
js> "<br/>"+s.match(/[^[\]]+(?=])/g).join("<br/>")+"<br/>"
"<br/>5<br/>Sport<br/>one<br/>"
如果你不想要外<br/>
,你可以这样做:
js> s.match(/[^[\]]+(?=])/g).join("<br/>")
"5<br/>Sport<br/>one"
编辑:
给出你的评论,你想要:
js> s.replace(/(\[.*\]){3}/g,"<br/>")
"<br/>"
只会将完全三次[…]
替换为<br/>
。
N.B。:请注意.*
可能会对您的字符串产生副作用,因此您可能需要使用:
js> s.replace(/(\[[\d\w]+\]){3}/g,"<br/>")
"<br/>"
相反,它只匹配括号中的数字和字母。
编辑#2:正如@aaronm所建议的那样:
js> s.replace(/([[^]]]){3}/g,"<br/>")
"<br/>"
甚至是一个更好的解决方案,因为它会匹配包含除另一个[…]
之外的所有内容的整理[…]
字符串。
答案 1 :(得分:0)
由于正则表达式贪婪,表达式可以非常简单:
var s = '[5][Sport][one]';
var re = /\[.*\]/;
console.log(s.replace(re,'<br />')); // <br />
请注意,HTML不使用XML样式的空标记,因此您应使用<br />
代替<br>
。