我在JavaScript中有一個很長的字符串像正則表達式字符串匹配?
var string = 'abc234832748374asdf7943278934haskhjd';
我想匹配像
abc234832748374
- 那就是 - 我試圖像
string.match(\abc[^abc]|\def[^def]|)
但是,這並不讓我兩個字符串因爲我需要數字嗎?
基本上我需要abc
+ 8個字符和def
之後的8-11個字符?我怎樣才能做到這一點 ?
我在JavaScript中有一個很長的字符串像正則表達式字符串匹配?
var string = 'abc234832748374asdf7943278934haskhjd';
我想匹配像
abc234832748374
- 那就是 - 我試圖像
string.match(\abc[^abc]|\def[^def]|)
但是,這並不讓我兩個字符串因爲我需要數字嗎?
基本上我需要abc
+ 8個字符和def
之後的8-11個字符?我怎樣才能做到這一點 ?
如果你想要的文字串,然後8-11位abc
或def
,你需要的東西,如:
(abc|def)[0-9]{8,11}
你可以在這裏進行測試:http://www.regular-expressions.info/javascriptexample.html
注意的是,如果你不想匹配更超過11雙控釋片,你需要在字符串的結尾錨(或[^0-9]
)。如果它只是8個或更多,你可以用{8}
取代{8,11}
。
可以爲後面8位數字的字符串匹配abc
abc[0-9]{8}
。
如果前三個字符是任意的,之後8-11個數字,嘗試[a-z]{3}[0-9]{8,11}
使用下面的正則表達式來獲得精確匹配,
string.match(/(abc|def)\d{8,11}/g);
相剋
"g"
全球
"i"
爲IGNORECASE
"m"
用於多
要結束闡述在已經發布的答案,你需要一個全球性的比賽,具體如下:
var matches = string.match(/(abc|def)\d{8,11}/g);
這將匹配字符串的所有子集,其中:
「g」標誌(全局)爲您提供所有匹配的列表,而不僅僅是第一個匹配。
在你的問題,你問8-11 字符,而不是數字。如果它們是數字或其他字符無關緊要,則可以使用「。」。而不是「\ d」。
我還注意到,您的每個示例匹配在「abc」或「def」之後都有11個以上的字符。如果任意數量的數字會做,那麼下面的正則表達式的可能更適合:
var matches = string.match(/(abc|def)\d*/g);
var matches = string.match(/(abc|def)\d+/g);
var matches = string.match(/(abc|def)\d{8,}/g);
+1需要時間寫一個解釋! –