javascript-正则表达式

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了javascript-正则表达式相关的知识,希望对你有一定的参考价值。

一、正则表达式简介

一套规则表达式

1.正则表达式的应用场景

 表单验证

 解析url参数

 筛选....

2.正则表达式的定义

 字面量形式  ===//

 构造函数形式 ===new RegExp()

*****区别

  字面量形式内不能够放入变量|函数

  构造函数形式内可以放入变量|函数

技术分享
/*
var reg = /a/;
alert(reg);
*/

var reg = new RegExp("b");
alert(reg);
View Code

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
View Code 

二、正则表达式的元字符

[]  ===》匹配括号内的任意“一个”字符

[^]  ===》匹配除了括号内的任意字符

[0-9] ===》匹配09的任意数字

[a-z] ===》匹配az的任意小写字母

[A-Z] ===》匹配AZ的任意大写字母

\\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) );
View Code

三、正则表达式限定符

^ ===》以字符串的起始(开始)

$===》以字符串的结束(结束)

技术分享
/*
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)  );*/
View Code

四、正则表达式重复

{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) );
*/
View Code

五、选择符

|  ===》或

技术分享
var reg1 = /com|cn/;
var str1 = "com";
alert(  reg1.test(str1) ); //com或cn都为true
View Code

 六、修饰符

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);
View Code

七、分组

() ==》把内容组合起来

技术分享
/*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)  );
*/
View Code

 八、字符类

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);
View Code

九、字符串匹配正则方法

search

如果匹配函数下标位置

如果不匹配返回-1

******不支持全局*****

match

如果匹配返回数组

如果不匹配返回null

matchexec 区别

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);
View Code

 技术分享



以上是关于javascript-正则表达式的主要内容,如果未能解决你的问题,请参考以下文章

JavaScript中 正则表达式的使用 及 常用正则表达式

Javascript 清理 URL 正则表达式

通过 Java 正则表达式提取 semver 版本字符串的片段

攻破难啃的骨头-正则表达式(转)

text 正则表达式片段

markdown 正则表达式模式片段