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]+$/