test : 正則去匹配字符串,若是匹配成功就返回真,若是匹配失敗就返回假java
test的寫法 : 正則.test(字符串)數組
1 var str = 'abcdef'; 2 3 var re = /b/; 4 5 console.log( re.test(str) ); app
//轉義字符:
n \n
r \r
t \t
\s : 空格
\S : 非空格
\d : 數字
\D : 非數字
\w : 字符 ( 字母 ,數字,下劃線_ )
\W : 非字符*/
console.log(/b/.test('abxhll'));//false
匹配一個單詞邊界,也就是指單詞和空格間的位置
\d:一個0-9的數字
一個\d表示一個數字
1 console.log(/\d/.test('123'));//true 編碼
String.search();
String.indexOf();
二者區別:search支持正則,indexOf不支持正則
1 console.log("miaov".search('v'));
\d匹配一個數字字符。等價於[0-9]。
\D匹配一個非數字字符。等價於[^0-9]。
1 console.log("abc1de2".search(/\D\D/));
正則默認區分大小寫
修飾符
i:忽略大小寫
1 console.log("123A789abc".search(/a/));//7 2 console.log("123A789abc".search(/A/i));//3
match : 正則去匹配字符串,若是匹配成功,就返回匹配成功的數組,若是匹配不成功,就返回null
match的寫法 : String.match()
正則默認:正則匹配成功就會結束,不會繼續匹配
若是想所有查找,就要加標識 g(全局匹配)
量詞 : 匹配不肯定的位置
+ : 至少出現一次spa
1 var str = "abc123bchg456"; 2 var re = /\d/; 3 console.log(str.match(re));//["1", index: 3, input: "abc123bchg456"]
查找所有
修飾符
g: 全局
1 var str = "abc123bchg456"; 2 var re = /\d/g; 3 console.log(str.match(re));//
貪婪模式
+量詞
最少一次最多不限
1 var str = "ab41c123bchg456"; 2 var re = /\d+/g; 3 console.log(str.match(re));//[41,123,456]
replace : 正則去匹配字符串,匹配成功的字符去替換成新的字符串
replace的寫法 : 字符串.replace(正則,新的字符串)
1 var str = 'welcome to learn java'; 2 console.log(str.replace('earn', '$$$'));//welcome to l$$ java
|:或code
1 var content = '你是個好孩子,你是個好孩子,你是個好孩子,你是個好孩子,'; 2 var content1 = content.replace(/好孩子|是/g,'***'); 3 console.log(content1);//你***個***,你***個***,你***個***,你***個***, 4 5 var content2 = content.replace(/好孩子|是/g,function(){ 6 return '$$$$'; 7 }); 8 console.log(content2);//你$$$$個$$$$,你$$$$個$$$$,你$$$$個$$$$,你$$$$個$$$$, 9 10 var content3 = content.replace(/好孩子|是/g,function(a){ 11 var s = ''; 12 for(var i=0;i<a.length;i++){ 13 s += '$' 14 } 15 return s; 16 //return '<strong>'+a+'</strong>'; 17 }); 18 console.log(content3);//你$個$$$,你$個$$$,你$個$$$,你$個$$$,
子項
()blog
1 var str = 'a11b'; 2 //a1或者2b 3 console.log(str.match(/a1|2b/)); 4 //a開頭b結尾,中間是1或者2 5 console.log(str.match(/a(1|2)b/));//null 6 var str1 = 'a1ba2ba34ba5c'; 7 console.log(str1.match(/a\d+b/g),function($0){//a1b a2b a34b
$0:表示當前此次被正則匹配的內容
從第二個參數開始後面的參數分別匹配的子項的內容字符串
1 console.log($0); 2 console.log($1); 3 }) 4 5 var str2 = str1.replace(/a\d+b/g,function($0,$1){//a1b a2b a34b
$0:表示當前此次被正則匹配的內容
從第二個參數開始後面的參數分別匹配的子項的內容input
1 console.log($0);//a1b a2b a34b 2 console.log($1);//0 3 6 3 }) 4 console.log(str2);//undefinedundefinedundefineda5c 5 6 var str = 'abc'; 7 var re = /(a)(b)(c)/; 8 console.log(str.match(re));
1 var str = 'a1ba2ba3ba4ba56b'; 2 console.log(str.match(/a(1|2|3|)b/g));//["a1b", "a2b", "a3b"] 3 console.log(str.match(/a[123]b/g));//["a1b", "a2b", "a3b"] 4 console.log(str.match(/a[1-9]b/g));//["a1b", "a2b", "a3b","a4b"] 5 console.log(str.match(/a[1-37-9]b/g));//["a1b", "a2b", "a3b"] 6 //^取非 7 console.log(str.match(/a[^123]b/g));//a4b 8 //[1-37-9] 1到3 7到9 9 //[a-zA-Z0-9]; 10 //[a-zA-Z0-9_];//=>\w
量詞
{n,m}:最少n次。最多m次 \d{3,5}
{n}:n次
{n,}:最少n次。最多不限
+:匹配前面的子表達式一次或屢次
?:匹配前面的子表達式零次或一次
*:匹配前面的子表達式零次或屢次
^不在[]中使用的時候表示整個字符串最開始的行首
$:行尾it
1 //驗證qq 2 var qq = '1623754758'; 3 console.log(/^[1-9]\d{4,11}$/.test(qq)); 4 //手機號碼 5 var phoneNumber = ''; 6 var reg = /^0?1(130|131|132)$/; 7 var arr = [130,131,132]; 8 new RegExp('^0?(+arr.join('|'))$');
轉義符
\n:new Line 換行 匹配一個換行符。等價於\x0a和\cJ。
\r:return 回車 匹配一個回車符。等價於\x0d和\cM。
\t:table 製表符 匹配一個製表符。等價於\x09和\cI。
\d匹配一個數字字符。等價於[0-9]。
\D匹配一個非數字字符。等價於[^0-9]
\w匹配包括下劃線的任何單詞字符。等價於「[A-Za-z0-9_]」。
\W匹配任何非單詞字符。等價於「[^A-Za-z0-9_]」。
\s匹配任何空白字符,包括空格、製表符、換頁符等等。等價於[ \f\n\r\t\v]。
\S匹配任何非空白字符。等價於[^ \f\n\r\t\v]。
\b匹配一個單詞邊界,也就是指單詞和空格間的位置。例如,「er\b」能夠匹配「never」中的「er」,但不能匹配「verb」中的「er」。
\B匹配非單詞邊界。「er\B」能匹配「verb」中的「er」,但不能匹配「never」中的「er」。
. : 表示任意字符但除了\n\r
1 //|abc| |def| |12a| |a_1|&|s| 2 console.log('abc def 12a a_1&s'.replace(/\b/g,'|'));//|abc| |def| |12a| |a_1|&|s| 3 console.log('$$$$$&***$\n####66'.replace(/\S/g,'*'));// 4 console.log('$$$$$&***$####66'.replace(/\S/g,'*')); 5 6 console.log('$$$$$&***$\n####66'.replace(/\b/g,'|')); 7 console.log('$$$$$&***$\n####66'.replace(/\./g,'*'));
1 console.log('11'.replace(/(\d)\1/g,'*')); 2 3 console.log('2a2'.replace(/(\d)a\1/g,'*')); 4 5 console.log('a11'.replace(/a(\d)\1/g,'*')); 6 //123456a6 7 console.log('123456a6'.replace(/(\d)+a\1/g,'*')); 8 9 console.log('1a21b2'.replace(/(\d)a(\d)\1b\2/g,'*'));//* 10 //嵌套指向 11 console.log('1a21b2'.replace(/(ab(12)(apple)(banaba))c/g,'*'));
找重複項最多的字符和個數:
1 var str = 'assssjdssskssalsssdkjsssdss'; 2 var arr = str.split(''); 3 str = arr.sort().join(''); 4 console.log(str);//aadddjjkklsssssssssssssssss 5 var value = ''; 6 var index = 0; 7 8 var re = /(\w)\1+/g; 9 str.replace(re,function($0,$1){ 10 console.log($0);//aa ddd jj kk sssssssssss 11 if(index<$0.length){ 12 index = $0.length; 13 value = $1; 14 } 15 }); 16 console.log('最多的字符:'+value+',重複的次數:'+index);//最多的字符:s,重複的次數:17
1 //校驗年齡16-100 2 var age = 20; 3 var re = /^(1[6-9]|[2-9]\d|100)$/; 4 console.log(re.test(age));//true 5 //匹配座機例如021-31661688 6 var phoneNumber = '021-31661688'; 7 var re = /^(0\d{2,3}-)?[1-9]\d{6,7}$/; 8 console.log(re.test(phoneNumber));//true 9 //匹配郵箱chen00jian@sina.com 10 var email = 'chen00jian@sina.com', 11 email1 = 'aaaa@163.com'; 12 var re = /^\w+@[a-z0-9\-]+(\.[a-z]{2,8}){1,2}$/i; 13 console.log(re.test(email));//true 14 console.log(re.test(email1));//true 15 //單詞邊界 16 var str = "\bwww\b \bchenyu\b \bcom\b"; 17 console.log(str.match(/\b/g).length);//6 18 //去除首行尾空格 19 var str = ' www baidu com '; 20 str = str.replace(/^\s+|\s+$/g,"*"); 21 console.log(str);//*www baidu com* 22 //除去行尾空格2 23 24 var str1 = ' www baidu c om '; 25 str1 = str1.replace(/^\s+|\s+$/g,"*"); 26 str1 = str1.split(/\s+/).join(" "); 27 console.log("|"+str1+"|");//|*www baidu c om*| 28 //找數字\d匹配一個數字字符 g —— global 全局搜索 29 //match 匹配全部知足條件的東西 返回一個數組 30 var str = "ds23fa 82d d 34f100"; 31 var re = /\d+/g; 32 console.log(str.match(re));//["23", "82", "34", "100"] 33 //*匹配前面的子表達式零次或屢次 34 var str = "12sdf22dsf23klj3"; 35 var re = /\d*/g; 36 console.log(str.match(re));//["12", "", "", "", "22", "", "", "", "23", "", "", "", "3", ""] 37 console.log(str.match(/\d*/g));//12,,,,22,,,,23,,,,3, 38 //慎用 會多匹配一次 39 //. 40 var str = 'abcd'; 41 console.log(str.match(/./g)); 42 43 //replace 44 var str = "abcdefaaaa"; 45 console.log(str.replace(/a/g,"%%%%"));//%%%%bcdef%%%%%%%%%%%%%%%%
用戶名:/^[a-z0-9_-]{3,16}$/
密碼:/^[a-z0-9_-]{6,18}$/
十六進制值:/^#?([a-f0-9]{6}|[a-f0-9]{3})$/
電子郵箱:/^([a-z0-9_\.-]+)@([\da-z\.-]+)\.([a-z\.]{2,6})$/
/^[a-z\d]+(\.[a-z\d]+)*@([\da-z](-[\da-z])?)+(\.{1,2}[a-z]+)+$/
URL:/^(https?:\/\/)?([\da-z\.-]+)\.([a-z\.]{2,6})([\/\w \.-]*)*\/?$/
IP 地址:/((2[0-4]\d|25[0-5]|[01]?\d\d?)\.){3}(2[0-4]\d|25[0-5]|[01]?\d\d?)/
/^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/
HTML 標籤:/^<([a-z]+)([^<]+)*(?:>(.*)<\/\1>|\s+\/>)$/
刪除代碼\\註釋:(?<!http:|\S)//.*$ Unicode編碼中的漢字範圍:/^[\u2E80-\u9FFF]+$/