正则表示式
什么是正则表示式
正则表示式(regular expression)是一个描述字元模式的物件。ECMAScript的RegExp类表示正则表示式,而String和RegExp都定义了使用正则表示式进行强大的模式匹配和文字检索与替换的函式。
正则表示式的作用
正则表示式主要用来验证客户端的输入资料。使用者填写完表单单击按钮之后,表单就会被发送到服务器,在服务器端通常会用JAVA、PHP、ASP.NET等服务器指令码对其进行进一步处理。因为客户端验证,可以节约大量的服务器端的系统资源,并且提供更好的使用者体验。
如何建立正则表示式
建正则表示式和建立字串类似,建立正则表示式提供了两种方法,一种是采用new运算子,另一个是采用字面量方式。
new运算子建立正则表示式
它接收两个引数:一个是要匹配的字串模式,另一个是可选的标志字串。
例项
var pattern= new RegExp("[bc]at","i");
//匹配第一个bat或者cat,不区分大小写
采用字面量方式建立正则表示式
与new运算子方式类似,它也可以看作是接收两个引数:一个是要匹配的字串模式,另一个是可选的标志字串。
例项
var pattern= /[bc]at/i;
//匹配第一个bat或者cat,不区分大小写
常用的正则表示式方法
正则表示式有很多方法,在这里只选几个比较常用的来讲解:
1. exec()方法
2. test()方法
3. search()方法
4. match()方法
5. replace()方法
exec()方法
该方法是专门为捕获组而设计的,其接受一个引数,即要应用模式的字串,然后返回包含第一个匹配项资讯的阵列;或者在没有匹配项的情况下返回null。返回的阵列虽然是Array的例项,但是包含两个额外的属性:index和input。其中index表示匹配项在字串中的位置,而input表示应用字串表示式的字串。
例项
var text = "mom and dad and baby";
var pattern= /mom( and dad( and baby)?)?/gi;
var matches= pattern.exec(text);
console.log(matches.index);//0
console.log(matches.input); //mom and dad and baby
console.log(matches[0]); //mom and dad and baby
console.log(matches[1]); //and dad and baby
console.log(matches[2]); //and baby
test()方法
正则表示式常用方法test(),它接受一个字串引数。在模式与该引数匹配的情况下返回true,否则返回false。
例项
//判断是否是数字
var str = \'374829348791\';
var re = /D/; // D代表非数字
if( re.test(str) ){ // 返回true,代表在字串中找到了非数字。
alert(\'不全是数字\');
}else{
alert(\'全是数字\');
}
search()方法
在字串搜寻符合正则的内容,搜寻到就返回出现的位置(从0开始,如果匹配的不只是一个字母,那只会返回第一个字母的位置), 如果搜寻失败就返回-1
例项
var str = \'abcdef\';
var re = /B/i;
//var re = new RegExp(\'B\',\'i\'); 也可以这样写
alert( str.search(re) ); // 1
match ()方法
获取正则匹配到的结果,以阵列的形式返回
例项
"186a619b28".match(/d+/g); // ["186","619","28"]
replace()方法
replace 本身是JavaScript字串物件的一个方法,它允许接收两个引数:replace([RegExp|String],[String|Function])
第1个引数可以是一个普通的字串或是一个正则表示式,第2个引数可以是一个普通的字串或是一个回拨函式;
例项
var phone = "13112345678";
var sliceNumber= 1234;
var newPhone= phone.replace(new RegExp(sliceNumber,\'g\'),\'****\');
console.log(newPhone);//131****5678
常用的正则表示式
1、使用者名称正则:
//使用者名称正则,4到16位(字母,数字,下划线,减号)
var uPattern = /^[a-zA-Z0-9_-]{4,16}$/;
2、密码强度正则:
//密码强度正则,最少6位,包括至少1个大写字母,1个小写字母,1个数字,1个特殊字元
var pPattern = /^.*(?=.{6,})(?=.*d)(?=.*[A-Z])(?=.*[a-z])(?=.*[[email protected]#$%^&*? ]).*$/;
3、Email正则:
//Email正则
var ePattern = /^([A-Za-z0-9_-.])[email protected]([A-Za-z0-9_-.])+.([A-Za-z]{2,4})$/;
4、手机号码正则:
//手机号正则
var mPattern = /^[1][3][0-9]{9}$/;
5、身份证号正则:
//身份证号(18位)正则
var cP = /^[1-9]d{5}(18|19|([23]d))d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)d{3}[0-9Xx]$/;
6、车牌号正则:
//车牌号正则
var cPattern = /^[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领A-Z]{1}[A-Z]{1}[A-Z0-9]{4}[A-Z0-9挂学警港澳]{1}$/;
7、包含中文正则:
//包含中文正则
var cnPattern = /[\\u4E00-\\u9FA5]/;
8、十六进位制颜色正则:
//RGB Hex颜色正则
var cPattern = /^#?([a-fA-F0-9]{6}|[a-fA-F0-9]{3})$/;
总结
通过本片文章你可以学到以下前端知识点:1.什么是正则表示式;
2.怎么建立正则表示式;
3.正则表示式方法;
4.正则表示式式应用领域;
IT技术研习社,专注互联网技术研究与分享,喜欢可以点选【关注】;把经验传递给有梦想的人;