定義正則:
var reg = new RegExp('a'); //實例化對象,參數是我們想要制定的規
var reg = /a/; //簡寫方法
正則的常用方法:
1、test():在字符串中查找符合正則的內容,查找到返回true,反之返回false
用法:正則.test(字符串);
例子:判斷是否是數字
var str = '12345678'; var reg = /\D/; // \D代表非數字 if(reg.test(str)){ alert('不全是數字'); }else{ alert('全是數字'); }
2、search():在字符串中搜索符合正則的內容,搜索到就返回出現的位置(從0開始,若搜索到的不只是一個字母,則返回第一個字母的位置),反之返回-1
用法:字符串.search(正則)
var str = 'webrty'; var reg = /B/i; //i表示不區分大小寫 console.log(str.search(reg)); //返回2
3、match():在字符串中搜索符合正則的內容,匹配成功就返回內容,格式為數組,失敗則返回null
用法:字符串.match(正則);
var str = 'as123msd8xx29shdkdk220nm'; var reg = /\d+/g; //匹配至少一個數字, g表示全局匹配 console.log(str.match(reg)); // ["123", "8", "29", "220"]
4、replace():查找符合正則的字符串,替換成對應的字符串,返回替換后的內容
用法:字符串.replace(正則,新的字符串/回調函數); (在回調函數中,第一個參數是指匹配到的第一個字符)
例子:敏感詞過濾
var str = '吃葡萄不吐葡萄皮'; var reg = /葡萄|皮/g; //匹配葡萄或皮 , 全局匹配 var str2 = str.replace(reg,'*'); console.log(str2); //吃*不吐**
想要實現幾個字對應幾個*,可以用回調函數
var str = '吃葡萄不吐葡萄皮'; var reg = /葡萄|皮/g; //匹配葡萄或皮 , 全局匹配 var str2 = str.replace(reg,function(str){ //str 參數第一次指的是葡萄,第二次指的是葡萄,第三次指的是皮 var result = ''; for(var i=0;i<str.length;i++){ result += '*'; } return result; }); console.log(str2); //吃**不吐***
字符:
^:匹配字符串的開始位置
$:匹配字符串的結束位置
*:匹配前面子表達式任意次數
+:匹配前面子表達式一次或多次
?:匹配前面子表達式0次或多次
. :匹配任何單個字符
{n}:n為非負整數,匹配確定的n次。例如:“o{2}”不能匹配‘bod’中的‘o’ ,但能匹配‘food’中的‘0’
{n,}:至少匹配n次
{n,m}:最少匹配n次,最多匹配m次
x|y:匹配x或y
[xyz]:字符集合。匹配任意一個字符。例如‘[abc]’ 匹配 ‘plain’ 中的 ‘a’
[^xyz]:匹配未包含的任意字符。例如‘[^abc]’ 匹配 ‘plain’ 中的 ‘plin’
\b:匹配單詞邊界。例如‘er\b’ 可以匹配‘nerver’ 中的‘er’ ,但不能匹配 ‘verb’中的‘er’
\B:匹配非單詞邊界
\d:匹配一個數字字符,同[0-9]
\D:匹配一個非數字字符,同[^0-9]
\n:匹配一個換行符
\r:匹配一個回車符
\s:匹配任何不可見字符,如空格
\S:匹配任何可見字符
\w:匹配任何包括下划線的單詞字符
\W:匹配任何非單詞字符
/.../g: 全局匹配
/.../i: 忽略大小寫