2012-08-07 325 views
0

以下是標誌忽略情況的代碼示例。我預計只會收到一場比賽。JavaScript RegExp忽略大小寫標誌與全局匹配標誌

var str = "Sample text"; 
var a = new Array(); 
a = str.match(/S(am)(p)/i); 

結果

A = [桑普] [是]我預計將有[P]

A = [桑普]

如果你改變我相剋

var str = "Sample text"; 
var a = new Array(); 
a = str.match(/S(am)(p)/g); 

驚喜(至少對我來說)結果只有一個元素

一個= [桑普]

+1

「i」表示不區分大小寫的匹配。 – 2012-08-07 14:53:16

+1

其他匹配由捕獲組「()」捕獲。如果沒有'g'標誌,'match()'函數最多返回1個匹配,並且從索引1獲取文本。 – nhahtdh 2012-08-07 14:53:55

+0

我認爲您需要重新閱讀文檔。 – Pointy 2012-08-07 15:00:35

回答

2

JavaScript的正則表達式API是非常不直觀的,因爲它根據g -flag做了各種各樣的魔法。

我只是要去蓋.match的行爲方式:

  • 沒有g -flag .match在不匹配的情況下返回全場比賽加上所有的捕捉組或null的數組。

  • With g -flag .match返回所有完全匹配的數組,並且捕獲組沒有區別。如果沒有匹配,則爲null

+0

Tahnk你的答案! – user1582192 2012-08-08 16:50:10

0
a = str.match(/S(am)(p)/i); 

返回第一匹配的字符串,$ 1 $ 2

一個= str.match(/ S(AM)(P)/克);匹配(這裏只有一個)

返回數組,如果你的字符串decalred像

var str = "Sample text Sample text"; 

/g的回報桑普桑普,它是有用的,當你的正則表達式看起來像/S(.m)(p)/g和字符串看起來像"Sample text Simple text";

+0

它是教育,謝謝你的努力! – user1582192 2012-08-08 17:21:40