javascript-正则表达式
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了javascript-正则表达式相关的知识,希望对你有一定的参考价值。
一、正则表达式简介
一套规则表达式
1.正则表达式的应用场景
表单验证
解析url参数
筛选....
2.正则表达式的定义
字面量形式 ===》 //
构造函数形式 ===》new RegExp()
*****区别
字面量形式内不能够放入变量|函数
构造函数形式内可以放入变量|函数
/* var reg = /a/; alert(reg); */ var reg = new RegExp("b"); alert(reg);
3.正则表达式的方法
test:
功能:看内容是否与正则匹配
返回:布尔值
匹配==》true
不匹配===>false
exec
功能:看内容是否与正则匹配
返回:匹配内容的数组
匹配==》数组
不匹配==》null
/* var reg = /a/; var str = "a"; alert( reg.test(str) ); //true alert(typeof reg.exec(str) ); //Object 删除typeof 返回a */ var num1 = 1; // var reg1 = /"+num1+"/; var reg1 = new RegExp(num1); var str1 = "1"; //alert(reg1);//"+num1+"/ alert( reg1.test(str1) ); //true
二、正则表达式的元字符
[] ===》匹配括号内的任意“一个”字符
[^] ===》匹配除了括号内的任意字符
[0-9] ===》匹配0至9的任意数字
[a-z] ===》匹配a至z的任意小写字母
[A-Z] ===》匹配A至Z的任意大写字母
\\d ===》匹配数字 :[0-9]
\\D ===》匹配非数字
\\w ===》匹配数字、字母、下划线 : [0-9a-zA-Z_]
\\W ===》匹配非数字、字母、下划线
\\s ===》匹配空格
\\S ===》非空格
\\b ===》匹配边界
. ===》除换行符以外的任意字符
转义符
\\ ===》去除具有特殊意义的元字符的功能,如\\d的匹配数字功能\\\\d加了转义后它将成为真正的d而失去匹配数字功能
/*var reg = /[abc]/; //匹配中括号内的任意一个字符 var str = "c"; alert(reg.test(str)); //true */ /*var reg1 = /[^abc]/; var str1 = "u"; alert(reg1.test(str1)); //true */ /*var reg2 = /[3-9]/; var num2 = 5; alert(reg2.test(num2));//true */ //var reg3 = /[a-z]/; /*var reg3 = /[A-Z]/; var str3 = "A"; alert(reg3.test(str3)); //true */ //var reg4 = /[0-9a-zA-Z]/; //数字 大小写字母 //var reg1 = /\\d/; /* var reg1 = /\\D/; var num1 = 5; alert( reg1.test(num1) ); */ //var reg2 = /\\w/; /*var reg2 = /\\W/; var str2 = "_"; alert(reg2.test(str2));*/ //var reg3 = /\\s/; /*var reg3 = /\\S/; var str3 = " "; alert( reg3.test(str3) );*/ /*var reg4 = /\\ba/; var str4 = " a"; alert( reg4.test(str4) );*/ /* var reg5 = /./; var str5 = "\\n"; alert( reg5.test(str5) ); */ var reg6 = /\\./; //.有特殊含义、除了换行符以外的任意字符 var str6 = "."; alert( reg6.test(str6) );
三、正则表达式限定符
^ ===》以字符串的起始(开始)
$===》以字符串的结束(结束)
/* var reg = /\\d/; // \\d ====>数字 没有限定符num中,只要有数字即可 var num = "5a"; alert(reg.test(num)); */ /* var reg1 = /\\w/; //数字 字母 下划线 var str1 = "^_^"; alert( reg1.test(str1) ); */ /*var reg2 = /^\\d\\d$/; // 以数字开始 以数字结束 ===》数字只有一位数 var num2 = "55"; alert( reg2.test(num2) );*/
四、正则表达式重复
{n} ====>匹配重复N次
{n,} ====》匹配重复最少n次,最多不限
{n,m} ====》匹配重复最少n次,最多m次
* ====》匹配重复最少0次,最多不限
+ ====》匹配重复最少1次,最多不限
? ====》匹配重复最少0次,最多一次
/* var reg3 = /^\\d{11}$/; // 手机号===>11位数 var num3 = 1234567890; alert( reg3.test(num3) ); //false */ //匹配数字最少匹配到6次 , 最多不限 /*var reg4 = /^\\d{6,}$/; var str4 = "123454655555555555789"; alert( reg4.test(str4) ) */ //用户名最少6个字符,最多12个字符 /* var reg5 = /^\\w{6,12}$/; var str5 = "123ab__44444a"; alert( reg5.test(str5) ); */ /*var reg6 = /^\\d*$/; //匹配数字,最少可以没有,最多不限制 var num6 = ""; alert( reg6.test(num6) );*/ /*var reg7 = /^\\d+$/; //匹配数字,最少一次,最多不限制 var num7 = "1111111111111"; alert( reg7.test(num7) );*/ /* var reg8 = /^\\d?$/; //匹配数字,最少0次,最多一次 var num8 = "11"; alert( reg8.test(num8) ); */
五、选择符
| ===》或
var reg1 = /com|cn/; var str1 = "com"; alert( reg1.test(str1) ); //com或cn都为true
六、修饰符
i ===》不区分大小写
g ===》全文匹配(全局模式)
m ===》换行匹配
/* var reg1 = /[a-zA-Z]/; // 匹配大写字母, 匹配小写字母 var str1 = "A"; alert( reg1.test(str1) ); */ /*var reg1 = /[A-Z]/i; // i===》不区分大小写 var str1 = "b"; alert( reg1.test(str1) );*/ /*var reg1 = new RegExp("[A-Z]","i"); var str1 = "b"; alert( reg1.test(str1) );*/ /*var reg1 = /a/g; var str1 = "abc a a a"; var str = str1.replace(reg1,"#"); document.write(str);*/ /* var reg1 = /baidu/g; var str1 = "1.baidu\\n2.baidu\\n3.baidu"; var str = str1.replace(reg1,"#"); document.write(str); */ /*var reg1 = /^\\d/gm; var str1 = "1.baidu\\n2.baidu\\n3.baidu"; var str = str1.replace(reg1,"#"); document.write(str);*/ var reg2 = /[a-z]/igm; var str2 = "a a a a A A"; var str = str2.replace(reg2,"#"); document.write(str);
七、分组
() ==》把内容组合起来
/*var reg1 = /^(abc)$/; var str1 = "abc"; alert( reg1.test(str1) );*/ /* var reg2 = /^ab{3}c{3}$/; //C重复必须是3次 var str2 = "abbbccc"; alert( reg2.test(str2) ); */ /* var reg2 = /^(abc){3}$/; //abc重复必须是3次 var str2 = "abcabcabc"; alert( reg2.test(str2) ); */
八、字符类
RegExp. (dollar)$1...(dollar)$99
注意:
要使用字符类,必须使用一下正则
要使用字符类返回结果,必须正则中有分组
/*var reg1 = /(a)/; var str1 = "abc abc abc"; reg1.test(str1); alert( RegExp.$1 );//匹配到第一个分组内的内容*/ /*var reg2 = /(baidu) (taobao) (jd)/; var str2 = "baidu taobao jd"; reg2.exec(str2); //运行正则 alert( RegExp.$3 );*/ var reg3 = /(taobao)/; var str3 = "我是taobao"; var str = str3.replace(reg3,"<b style=‘color:red‘>$1</b>"); document.write(str);
九、字符串匹配正则方法
search
如果匹配函数下标位置
如果不匹配返回-1
******不支持全局*****
match
如果匹配返回数组
如果不匹配返回null
match和exec 区别
match支持全局
exec不支持全局,可以用循环遍历出来
replace
语法:字符串.方法名称
/* var reg1 = /a/g; var str1 = "b a c a d"; var sh = str1.search(reg1); document.write(sh); */ /* var reg2 = /a/g; var str2 = "ab ac ad"; //var arr = reg2.exec(str2); //正则.exec这个方法==》不支持全局 //document.write(arr); var arr = null; while(arr=reg2.exec(str2)){ document.write(arr); }*/ /* var reg3 = /a/g; var str3 = "ab ac ad"; var arr = str3.match(reg3); document.write(arr); */ var reg4 = /b/g; var str4 = "ab bb cb"; var str = str4.replace(reg4,"*"); document.write(str);
以上是关于javascript-正则表达式的主要内容,如果未能解决你的问题,请参考以下文章
JavaScript中 正则表达式的使用 及 常用正则表达式