1. 程式人生 > >javascript-正則表達式

javascript-正則表達式

解析 http arc 轉義 ref font pen 3-9 ron

一、正則表達式簡介

一套規則表達式

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-正則表達式