重学正则
两种正则不同写法
- javascript写法reg = new RegExp(“规则”,”选项”) 用于字符串拼接
规则在new的时候特殊情况,需要转义
eg: new RegExp(“\d”) 一个数字
perl写法reg = /a/
选项:
+多个 \d 数字 \b边界 |或 ^行首 $行尾 -范围 \s空格1
2
3
4[\u4e00-\u9fa5] //中文
/^(0[1-9]\d{1,2}-)?[1-9]\d{6,7}$/ //电话
/^\w+@[a-z0-9\-]+(\.[a-z]{2,6}){1,2}$/i //邮箱
1[3578]\d{9} //手机选项:
i(忽略大小写) m(多行) g(全局找)
用法
- search
str.search(re) ;// 找到 返回index 没找到 返回 -1 - match
str.match(re) 匹配 返回一个数组(符合正则) - replace
屏蔽关键字
eg1: str = str.replace(/Chrome/g,function(s){
var str = “”;
for(var i = 0; i < s.length; i++){
str += “*”;
}
eg2: document.write(str.replace(/a/g,function(s){
return “+”;
}));
document.write(str.replace(/a/g,”+”));等同于 - test唯一特殊
reg.test(str)
应用
trim函数 首尾去空格
1
2
3function trim(str){
return str.replace(/^\s+|\s+$/g,"");
}class取dom
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19function getByClass(oParent,sClass){
if(oParent.getElementsByClassName){
return oParent.getElementsByClassName(sClass);
}
var result = [];
var re = new RegExp("\\b" + sClass + "\\b");
var aEle = oParent.getElementsByTagName("*");
for(var i = 0; i < aEle.length; i++){
if(re.test(aEle[i].className)){
result.push(aEle[i]);
}
}
return result;
}