正则表达式
正则表达式是一个描述字符模式的对象,javascript使用RegExp类来表示正则表达式
//RegExp()创建对象
var a=new RegExp('s$')
//直接量语法创建对象
var a=/s$/
属性:
ignoreCase:返回一个布尔值,表示是否设置了i修饰符,该属性只读。
global:返回一个布尔值,表示是否设置了g修饰符,该属性只读。
multiline:返回一个布尔值,表示是否设置了m修饰符,该属性只读。
source:返回正则表达式的字符串形式(不包括反斜杠),该属性只读。
lastIndex:返回下一次开始搜索的位置。该属性可读写,只在设置了g修饰符时有意义。
正则的三种模式:
g:默认情况下,第一次匹配成功后,正则对象就停止向下匹配。g修饰符表示全局匹配,加上以后 ,正则对象将匹配全部符合条件的结果,主要用于搜索和替换。
i:默认情况下,正则对象区分字母的大小写,加上i修饰符后忽略大小写。
m:有时字符串的头部或尾部可能有换行符。默认情况下,正则对象会将换行符算入字符串的开头或结尾。m修饰符表示多行模式,加上以后,正则对象会忽略字符串头部或尾部的换行符,即^和$会忽略换行符
var c=/abc/igm;
console.log(c.ignoreCase);//true
console.log(c.global);//true
console.log(c.multiline);//true
console.log(c.source);//abc
正则表达式中的方法:
方法:
test():检索字符串中的指定值。返回值是true或false.语法:Objectname.test(str)
exec():检索字符串中的指定值。返回值是被找到的值,如果没有发现匹配,则返回null.语法:Objectname.exec(str)
compile():用于改变RegExp.可以改变检索模式,也可以添加或删除第二个参数。语法:Objectname.compile(str)
var a=/abc/
undefined
console.log(a.test('abc123'))
//true
console.log(a.exec('abc123'))
// ["abc", index: 0, input: "abc123", groups: undefined]
正则和字符串函数协同使用
match();语法 :str.match(Objectname)
match其实和exec类似。
区别:math如果需要匹配的正则表达式使用了g模式,则会一次性把所有的匹配结果都放在数组里。
而exec()则不会,exec会依照g模式,把lastIndex往后推至下一次匹配开始的下标。
search();
能匹配到就返回第一次匹配到的下标;无匹配值返回-1. 语法 :str.search(Objectname)
手机正则表达式
var reg=/^1[3|4|5|6|8|9]\d{9}$/;
var str='13245215566';
var str1='144525685556';
var str2='12245455864';
reg.exec(str);//true
reg.exec(str1);//false
reg.exec(str2);//false
邮箱正则表达式
//纯数字、纯字母、字母数字混合、带点、带下划线、带连接线
var reg=/^[a-zA-Z\d]+[\.\_\-a-zA-Z\d]*\@[a-zA-Z\d]+(\.[a-zA-Z]{2,4})+$/;
var str='466da@qq.com';
reg.exec(str);//["466da@qq.com", ".com", index: 0, input: "466da@qq.com", groups: undefined]
屏蔽词案例
var str=['王八蛋','龟孙'];
var rep=str.join(')|(');// 王八蛋)|(龟孙
var join='('+rep+')';// (王八蛋)|(龟孙)
var reg=new RegExp(join,'ig');
function rp(str)
{
return str.replace(reg,'*');//将字符串中正则匹配到的转换为*
}
var str1='你个王八蛋,小龟孙';
console.log(rp(str1));// '你个*,小*'