我想有一個字符串,並刪除方括號內的字符的所有出現:如何刪除括號中除完全數字內容以外的所有內容?
[foo]
,[foo123bar]
和[123bar]
應該被刪除
但我想保持完好只由數字組成括號:
[1]
和[123]
應保持
我試了幾件事情,但無濟於事:
text = text.replace(/\[^[0-9+]\]/gi, "");
text = text.replace(/\[^[\d]\]/gi, "");
我想有一個字符串,並刪除方括號內的字符的所有出現:如何刪除括號中除完全數字內容以外的所有內容?
[foo]
,[foo123bar]
和[123bar]
應該被刪除
但我想保持完好只由數字組成括號:
[1]
和[123]
應保持
我試了幾件事情,但無濟於事:
text = text.replace(/\[^[0-9+]\]/gi, "");
text = text.replace(/\[^[\d]\]/gi, "");
你要找的工具是negative lookahead。這裏是你將如何使用它:
text = text.replace(/\[(?!\d+\])[^\[\]]+\]/g, "");
\[
後定位的開口支架,超前,(?!\d+\])
斷言,支架不僅包含數字。
然後,[^\[\]]+
匹配任何不是方括號的內容,確保(例如)您不會意外地匹配「嵌套」括號,如[[123]]
。
最後,\]
匹配右括號。
謝謝 - 這是非常有幫助的。我知道\ d應該介入某個地方。這是它的行動:http://jsfiddle.net/QL4UL/ – annie
偉大的,從來沒有聽說過負面的前瞻。這就是我喜歡SO的原因。 –
你可能需要這樣:
text = text.replace(/\[[^\]]*[^0-9\]][^\]]*\]/gi, "");
說明:您希望保留包含只有數字括號內的序列。另一種說法是刪除那些1)括在括號內的序列,2)不包含右括號,3)至少包含一個非數字字符。上面的正則表達式匹配前面的括號(\[
),後面是除了結尾括號([^\]]
,注意結尾括號必須被轉義)之外的任意字符序列,然後是非數字字符(不包括右括號),然後是除右括號之外的任意字符序列,然後是右括號。
中沒有數字字符感謝您的解釋! – annie
在蟒蛇:
import re
text = '[foo] [foo123bar] [123bar] [foo123] [1] [123]'
print re.sub('(\[.*[^0-9]+\])|(\[[^0-9][^\]]*\])', '', text)
請同時添加您正在使用的語言的標籤。 –
不工作? 'text.replace(/ \ [^ [0-9] + \]/gi,「」);'改變'+'的位置。對不起,它不會,它只會替換字符,如果[]' – rubish