正则表达式的用法和常用实例【2】

常用正则表达式

 

包含中文的(也可以用于排除、不包含中文)的正则表达式:

1 //字符串是否包含中文 []表示匹配方括号的中任意字符,\u4e00是Unicode中汉字的开始,\u9fa5则是Unicode中汉字的结束
2 var regExp1 = /[\u4e00-\u9fa5]/;
3 var str1 = '23dasd哦';
4 console.log(regExp1.test(str1)); //返回true,包含中文

 

验证邮箱地址的正则表达式:

1 //邮箱地址验证
2 //正则解读:^[A-Za-z\d]表示以英文字母或数字开始,“+”表示匹配前面一个表达式1次或者多次,等价于 {1,}。
3 // ([-_.][A-Za-z\d]+)表示接着中间可以有“-”,“_”,“.”,然后是字母或数字,接下来的“*”表示匹配前一个表达式(就是括号中的匹配)零次或多次
4 //接着匹配邮箱必有的“@”,接下来的([A-Za-z\d]+[-.])匹配字符加数字后跟“-”或“.”,比如@163.com中的163. ,
5 // 最后的[A-Za-z\d]{2,4}$中,“$”表示匹配输入的结束{2,4}表示匹配前面的字符至少2次,最多4次,简单来说就是域名,比如.com中的com,.cn中的cn
6 var regExp2 = /^[A-Za-z\d]+([-_.][A-Za-z\d]+)*@([A-Za-z\d]+[-.])+[A-Za-z\d]{2,4}$/;
7 var str2 = 'mader_mader@qq.vip.com';
8 console.log(regExp2.test(str2)); //返回true,邮箱地址正确

 

 

包含且只包含数字+字母的正则表达式:

1 //8到16位英文+数字的密码验证
2 //正则解读:(?![0-9]+$)表示该位置以后不全是数字,(?![a-zA-Z]+$)表示该位置以后不全是字母
3 var regExp3 = /^(?![0-9]+$)(?![a-zA-Z]+$)[0-9A-Za-z]{8,16}$/;
4 var str3 =  'sdf3255521243';
5 console.log(regExp3.test(str3)); //返回true

 

匹配含有未知特殊字符的字符串(含需要转义的字符),找了很久没找到类似的例子,只好自己想个笨的,如果你知道有更好的,请留言,不吝赐教。

应用场景:链接添加a标签, 搜索联想词高亮

1 //str(要特殊处理的内容):有可能来自用户输入,有可能来自接口返回的联想词,所以不清楚是否含有需要转义的字符,如"www.baidu.com?keyword='cnblog'" 
2 var str = "www.baidu.com?keyword='cnblog'";          
3 var reg1 = /(.)/g;
4 //这里将原字符串的每一个字符用“[]”包裹起来,利用[]里的特殊字符不用转义
5 var str1 = str.replace(reg1, '[$1]');
6 var reg2 = new RegExp(str1, "g");
7 //str2:含有str的字符串,如“链接:www.baidu.com?keyword='cnblog'”
8 var str2 = “链接:www.baidu.com?keyword='cnblog'”;
9 str2 = str2.replace(reg2, '<u style="color:red">' + str + '</u>');

 

获取url参数的值:

1 //以百度搜索为例
2 var url = 'https://www.baidu.com/s?ie=UTF-8&wd=丿浮生若夢';
3 //匹配“?”或“&”开头,“wd=”(wd为要匹配的参数名),“([^&]*)”匹配非&的多个字符,以&结尾或整个字符串的结尾
4 var reg = new RegExp("(\\?|&)wd=([^&]*)(&|$)");
5 //window.location.search获得的是url问号(包括问号)后面的字符串
6 var arr = window.location.search.match(reg); //arr[2]为所求参数值(正则第二个括号匹配的值) arr[0]为整个字符串
7 //如果参数值可能是中文,用decodeURIComponent进行解码
8 console.log(decodeURIComponent(arr[2]));

 

posted @ 2017-10-12 17:42  丿浮生若夢  阅读(4851)  评论(0编辑  收藏  举报