繁体   English   中英

如何使用正则表达式获取方括号及其元素

[英]How to get square brackets with their elements with regular expression

我有以下字符串:

[5][Sport][one]

我想用以下字符串完全替换它:

<br />

我尝试了以下正则表达式,但它为我提供了方括号[5,Sport,one]作为列表

/[^[\]]+(?=])/g

我不确定您的实际期望,因为您没有提供所需的输出...

所以你的意思是:

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/>"

这将只需更换的整整三OCCURENCES […]<br/>

注意:请注意.*可能会对字符串产生副作用,因此您可能需要使用:

js> s.replace(/(\[[\d\w]+\]){3}/g,"<br/>")
"<br/>"

而是仅匹配括号中的数字和字母。

编辑#2:@aaronm建议:

js> s.replace(/([[^]]]){3}/g,"<br/>")
"<br/>"

甚至是更好的解决方案,因为它将匹配包含其他[…]以外的所有内容的整理后的[…]字符串。

由于正则表达式是贪婪的,因此表达式可以非常简单:

var s = '[5][Sport][one]';
var re = /\[.*\]/;

console.log(s.replace(re,'<br />')); // <br />

请注意,HTML不使用XML样式的空标记,因此应使用<br>而不是<br />

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM