一个正则表达式通常由以下部分组成:
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模式所分组的所有匹配字符串组