簡體   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