1.語法: var expression = /pattern/flags ; pattern: 任何簡單或複雜的正則表達式。 flags: 可以是 g,i,m 或它們的組合。 g:表示全局模式,即模式將被應用於所有字元串,而非在發現第一個匹配項時就立即停止。 i:表示不區分大小寫。 m:表示多行, ...
1.語法:
var expression = /pattern/flags ;
pattern: 任何簡單或複雜的正則表達式。
flags: 可以是 g,i,m 或它們的組合。
g:表示全局模式,即模式將被應用於所有字元串,而非在發現第一個匹配項時就立即停止。
i:表示不區分大小寫。
m:表示多行,及在到達一行文本末尾時還會繼續查找下一行。
例子:
匹配字元串中所有有"at"的實例
var pattern1=/at/g
2.模式中的所有元字元都必須轉義。
元字元: ({\^$|)?*+.]}
例子: 匹配所有“.at”, 不區分大小寫
var pattern2 = /\.at/gi
3.RegExp 實例方法:
exec() : 接受一個參數,即要應用模式的字元串,然後返回包含第一個匹配項信息的數組,或者沒有匹配項的情況下返回null.返回的數組雖然是Array 的實例,但包含兩個額外的屬性:index和input。其中index表示匹配項在字元串中的位置,而input表示應用正則表達式的字元串。
在數組中,第一項是與整個模式匹配的字元串。其它項是與模式中的捕獲組匹配的字元串。如果沒有捕獲組,數組只有一項。
例子:
var text =“mom and dad and body"
var parrern =/mom( and dad( and bady)?)?/gi
var matches = parrern.exec(text);
alert(matches.index); //0
alert(matches.input); //“mom and dad and body"
alert(matches[0]); //“mom and dad and body"
alert(matches[1]); //" and dad and bady"
alert(match[2]); //" and bady"
對於exec()方法而言,即使在模式中設置了全局標誌(g),它每次也只會返回一個匹配項。在不設置全局標誌的情況下,在同一字元串上調用exec()將始終返回第一個匹配項的信息。而設置全局標誌情況下,每次調用exec()則會在字元串中繼續查找新的匹配項。
例子:
var text ="cat , bat, sat, fat";
var pattern1 =/.at/; //非全局模式
var matches = pattern1.exec(text);
alert(matches.index); //0
alert(matches[0]); //cat
alert(pattern1.lastIndex); //0
matches = pattern1.exec(text);
alert(matches.index); //0
alert(matches[0]); //cat
alert(pattern1.lastIndex); //0
var pattern2 =/.at/g; //全局模式
var matches = pattern2.exec(text);
alert(matches.index); //0
alert(matches[0]); //cat
alert(pattern2.lastIndex); //3
matches = pattern2.exec(text);
alert(matches.index); //5
alert(matches[0]); //bat
alert(pattern2.lastIndex); //8
正則表達式的第二個方法是 test(), 它接受一個字元串參數,在模式與該參數匹配的情況下返回true;否則返回false. 在只想知道目標字元串與模式是否匹配時很方便。
4.RegExp 構造函數屬性
RegExp 構造函數包含一些屬性,這些屬性適用於作用域中的所有正則表達式,並且基於所執行的最近一次正則表達式操作而變化。
屬性名 | 說明 |
input | 最近一次要匹配的字元串 |
lastMatch | 最近一次的匹配項 |
lastParen | 最近一次匹配的捕獲組 |
leftContext | input字元串中lastMatch之前的文本 |
multiline |
布爾值,表示是否所有表達式都是多行模式 |
rightContext |
input字元串中lastMatch之後的文本 |
使用這些屬性可以從exec()或test()執行的操作中提取出更具體的信息.
例子:
var text ="this has been a short summer";
var pattern = /(.)hort/g;
if(pattern.test(text)){
alert(RegExp.input); //this has been a short summer
alert(RegExp.leftContext); //this has been a
alert(RegExp.rightContext); //summer
alert(RegExp.lastMatch): //short
alert(RegExp.lastParen): //s
alert(RegExp.multiline): //false
}