RegExp对象
RegExp对象表示正则表达式,是对字符串执行模式匹配的强大工具。
构造正则表达式方式:
直接定义:
var reg=/pattern/attributes;创建RegExp对象:
var reg=new RegExp(pattern,attributes);
参数pattern是一个字符串,指定了正则表达式的模式或其他正则表达式;
参数attribute是一个可选字符串,包含属性”g”、”i”和”m”,分别用于指定全局匹配、区分大小写的匹配和多行匹配。ECMAScript标准化之前,不支持m属性。如果pattern是正则表达式,而不是字符串,则必须省略该参数。
RegExpObject.test(string)
检测字符串是否匹配某个模式,是则返回true,否则返回false。
修饰符
正则检测方式,如果不设置全局检测,那么只要检测到一次就结束。
i 不区分大小写
g 全局匹配
m 多行匹配
元字符
. 查找单个字符,所有非换行和行结束符的字符
\w 查找数字字母下划线
\W 查找非数字字母下划线
\d 查找数字
\D 查找非数字
\s 查找空格
\S 查找非空格
\b 检测单词开头或者结尾是否有
\B 不处于单词开头或结尾的
\0 空字符串,也相当于NUL
\n 查找换行符
\f 查找换页符
\t 查找制表符
\v 查找垂直制表符
\xxx 查找以八进制数xxx规定的字符
\xdd 查找以十六进制数dd规定的字符
\uxxxx 查找以十六进制数xxxx规定的Unicode字符
量词
n+ 包含一个及以上(至少一个)n的字符串
n* 包含零个或多个n的字符串
n? 包含零个或一个n的字符串
n{X} 包含X个n的序列的字符串
n{X,Y} 包含X到Y个n的序列的字符串
n{X,} 包含至少X个n的序列的字符串
n$ 匹配任何结尾为n的字符串
^n 匹配任何开头为n的字符串
?=n 匹配任何其后紧接指定字符串n的字符串
?!n 匹配任何其后没有紧接指定字符串n的字符串
方括号
[abc] 查找方括号之间的任何字符
[^abc] 查找任何不在方括号之间的字符
[0-9] 查找任何从0至9的数字
[a-z] 查找任何从小写a到小写z的字符
[A-Z] 查找任何从大写A到大写Z的字符
[A-Za-z]查找任何从大写A到小写Z的字符
() 查找任何指定的选项
支持正则表达式的方法
stringObject.search(regexp)
返回第一个与regexp相匹配的起始位置,如果没有则返回-1。此方法不支持全局匹配,如需忽略大小写,需添加i。
stringObject.match(regexp)
返回存放匹配结果的数组。数组内容依赖于regexp是否有全局标志g。
stringObject.replace(regexp,replacement)
返回一个新的字符串,用replacement替换regexp第一次匹配或所有匹配之后得到的。
stringObject.spilt(separator,howmany)
前面已讲过,在此不再一一赘述。
//判断手机号
var reg1=/^1[34578]\d{9}/;
//判断固定电话号码
var reg2=/(^0\d{2,3}-[1-9]\d{6,7}$)|(^[1-9]\d{6,7}$)/;
//判断汉字
var reg3=/[\u4e00-\u9fa5]+/g;
//选择替换关键字
var reg4=/哈哈|呵呵|这个是/g;
var str="这个是的呵呵,这个哈哈是的,呵呵";
var newStr=str.replace(reg4,function(sr){
var str="";
for(var i=0;i<sr.length;i++){
str+="*";
}
return str;
})
console.log(newStr);