正則表達式的用法和常用實例【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]));

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM