一個正則表達式通常由以下部分組成:
1一個用於匹配的模式文本
2用0個或多個修飾符描述的匹配模式細節
eg:var re=new RegExp("j.*t");
var re=/j.*t/
*:0個或多個單元
.:任意字符
RegExp對象的屬性:
global:若該屬性的值爲false,相關搜索在找到第一個位置就會停止。
ignoreCase:設置大小寫相關,默認爲false
multiline:設置是否跨行搜索的選項,默認爲false
lastIndex:搜索開始的索引爲,默認爲0
source:用於存儲正則表達式匹配模式的屬性
注意:除了lastIndex外,上面所有屬性在對象創建之後就都不能被修改了。
RegExp對象的方法:
test()返回值是布爾值,找到匹配內容,返回True
exec()返回的則是由匹配字符串組成的數組。
eg:var str='JavaScript';
/j.*/igm.test(str)
//true
var str='JavaScript';
/j.*/ig.exec(str)[0]
以正則表達式爲參數的字符串方法:
match():返回一個包含匹配內容的數組
search():返回是第一個匹配內容所在位置
replace():將匹配文本替換成指定的字符串
split():根據指定的正則表達式將目標字符串分割成若干個數組元素
eg:var str=new String('JavaScript');
str.match(/J/)
//["J"]
var str=new String('JavaScript');
str.search(/J/)
//0
var str=new String('JavaScript');
str.replace(/J/,'')
//avaScript
想讓相關替換的字符串中包含匹配的文本,可以使用修飾符$& ,
eg:str.replace(/[A-Z]/g,"_$&")
//"_Java_Script"
小例子:
提取E-mail的前半部分
var email=“[email protected]”
var username=email.replace(/(.*)@.*/,"$1")
//test $1表示匹配分組中的第一組
回調式替換:
function replaceCallback(match){
return "-"+match.toLowerCase();
}
str.replace(/[A-Z]/g,replaceCallback);
//"-java-script"
eg:
var glob;//參數數組
var re=/(.*)@(.*)\.(.*)/;
var callback=function(){
gloab=arguments;
return arguments[0] + "------" +arguments[1]+"----"+arguments[2]+"----"+arguments[3]+"----"+arguments[4]
}
"[email protected]".replace(re,callback);
glaob;
//["[email protected]",
"abcdef",
"123",
"com",
0,
"[email protected]"]
首參數:正則表達式所匹配的內容
尾參數:被搜索的字符串
尾參數之前的參數:匹配內容所在位置
剩下的參數:有regexp模式所分組的所有匹配字符串組