對於括號中的子表達式,正則表達式會將匹配的子表達式進行存儲。
<pre class="javascript" name="code">var regular = /^Subject:(\d)/
var str = "Subject:1 as something";
var result = regular.exec(str);
alert(reslt[0]) //Subject:1
alert(result[1]) //1
上面的例子中,聲明瞭一個正則表達式,然後調用方法exec()執行正則的匹配,返回匹配結果的字符數組。
由結果我們可以看見,整個表達式的匹配結果作爲數組的第一項,子表達式(\d)的匹配結果也進行了保存操作,通過匹配結果可以獲取到。
有些時候我們只需要測試表達是否可以匹配,而並不需要進行存儲,可以通過非捕獲型括號"(?:)"
var regular = /^Subject:(?:\d)/
var str = "Subject:1 as something";
var result = regular.exec(str);
alert(reslt[0]) //Subject:1
alert(result[1]) //null
子表達式(?:\d)並沒有進行存儲