js基礎 - 正則表達式的詳細介紹以及電子郵件、手機號碼的格式舉例

正則表達式

  1. 什麼是正則表達式
  2. 正則表達式的創建
  3. 正則表達式的語法
  4. 字符串結合正則表達式的使用(重點)
  5. 電子郵箱和手機號碼的格式測試


一、什麼是正則表達式

正則表達式用於定義一些字符串的規則,計算機可以根據正則表達式,來檢查一個字符串是否符合規則,獲取將字符串中符合規則的內容提取出來。


二、正則表達式的創建

①創建正則表達式的對象:

      語法: var 變量  = new RegExp("正則表達式" , ["匹配模式"]);

②以字面量來創建正則表達式:

     語法:var reg=/正則表達式/[匹配模式];

匹配模式:

  • i 忽略大小寫
  • g 全局匹配模式
var str1="hello world";
var str2="abcde";
var str3="A";

//創建正則表達式
var reg  = new RegExp("a","i"); 
//或者var reg = /a/i;
document.write(reg);         //返回/a/
document.write(typeof reg);  //返回object

// 正則表達式的方法reg.test()
result = reg.test(str1);      //返回false
document.write(result);
result = reg.test(str2);      //返回true
document.write(result);
result = reg.test(str3);      //返回true
document.write(result);

三、正則表達式的語法

/*基礎

  • /x/                 存在x
  • []裏的內容是或的關係
  • [ab] == a|b
  • [a-z]              任意小寫字母
  • [A-Z]             任意大寫字母
  • [A-z]             任意字母
  • [^]                 除了^後面的內容
  • [0-9]              任意數字
  • [a-b]              數字a到數字b之間的任意數字 
  • ......

*/

var reg = "";
reg = /a/        //存在a
reg = /a|b/;     //a或b
reg = /[ab]/;    //a或b
reg = /[a-z]/;   //任意小寫字母
reg = /[A-Z]/;   //任意大寫字母
reg = /[A-z]/;   //任意字母
reg = /[0-9]/;   //任意數字
reg = /[^ab]/;   // 除了^後面的內容

/*量詞

  • a{n}                a正好出現n次
  • (ab){n}            ab正好出現n次
  • ax{n}b             a和b之間的x存在不止n次 
  • ac{x,y}b           a和b之間的c出現x到y次,包括x和y 
  • ac{x,}b             a和b之間的c出現至少x次,包括x 
  • ac+b                 +代表至少出現一個,a和b之家的c至少出現一次
  • ac*b                  *代表出現0或多個 [零,正無窮]
  • ac?b                  ?代表出現0或1次 [0,1] 
  • ^a                       ^表示開頭,檢查字符串是否以a開頭
  • a$                       $表示結尾,檢查字符串是否以a結尾
  •  ^a$                     a即是開頭,也是結尾 (正則表達式中同時使用^$則要求字符串必須完全符合正則表達式)
  • ^a|a$                   以a開頭或以a結尾

*/

var reg="";

reg = /a{n}/             //a正好出現n次
reg = /(ab){n}/          //ab正好出現n次
reg = /ax{n}b/           //a和b之間的x存在不止n次 
reg = /ac{x,y}b/         //a和b之間的c出現x到y次,包括x和y  
reg = /ac{x,}b/          //a和b之間的c出現至少x次,包括x 
reg = /ac+b/             //+代表至少出現一個,a和b之家的c至少出現一次
reg = /ac*b/             //*代表出現0或多個 [零,正無窮]
reg = /ac?b/             //?代表出現0或1次 [0,1] 
reg = /^a/               //^表示開頭,檢查字符串是否以a開頭
reg = /a$/               //$表示結尾,檢查字符串是否以a結尾
reg = /^a$/              //a即是開頭,也是結尾
reg = /^a|a$/            // 以a開頭或以a結尾
reg = /^a|a$/            //以a開頭或以a結尾

  例:創建一個正則表達式,檢查一個字符串是否是一個合法手機號

     ---手機號規則:

         -1  3-9  123456789  一共11位數字 

                      -1、以1開頭

                      - 2、第二位爲3-9任意數字

                      -3、三位以後任意數字9個

         僞代碼:^1   [3-9]   [0-9]{9}$

var reg = /^a[3-9][0-9]{9}$/;

alert(reg.test("13920325468"));

/*檢查字符串是否含有.

      .在正則表達式中表示任意字符

      在正則表達式中使用\作爲轉義字符

      \\表示\

      \.表示.

  • .             任意字符
  • /\./          含有.

      注意:正則表達式的構造函數的參數是字符串,要想使用\,則需對其轉義\\後,才能輸出\\.

*/

var reg1 = /\./;     //含有.
var reg2 = new RegExp("/\\./");

alert(reg1.test("sa.21xas"));
alert(reg2.test("sa21xas"));

/*元符號

      -    擁有特殊含義的字符

  • \w              - 任意字母、數字和下劃線_                          - [A-z0-9_]
  • \W             - 除了字母、數字和下劃線之外的字符          - [^A-z0-9_]
  • \d               - 任意的數字                                                 - [0-9]
  • \D              - 除了數字                                                     -[^0-9]
  • \s               - 空格                                                            -  
  • \S              - 除了空格                                                     - 
  • \b               - 單詞邊界 \b單詞\b                                      -
  • \B               - 除了單詞邊界                                             - 
		var w = /\w/;
		var W = /\W/;
		var d = /\d/;
		var D = /\D/;
		var s = /\s/;
		var S = /\S/;
		var b = /\bword\b/;
		var B = /\Bword\B/;

例:取名字,自動去除空格

1、去除開頭和結尾的空格

		var str = prompt("請輸入名字:");

		//去除開頭的空格
		result = str.replace(/^\s*/ , "");
		//去除結尾的空格
		result = str.replace(/\s*$/,"");
		//合併 去除結尾和開頭的空格
		result = str.replace(/^\s*|\s*$/g,"");

		//測試結果是否相同
		alert(result == str);

2、去除所有空格

		var str = prompt("請輸入名字:");

		//去除所有空格
		result = str.replace(/\s/g , "");

		//測試結果是否相同
		alert(result == str);

四、字符串結合正則表達式的使用(重點)

支持正則表達式的String對象方法(字符串)

  1. split()
  2. search()
  3. match()
  4. replace()

 

1、split()方法

          -        該方法將一個字符串拆分成一個數組

          -        方法中可以傳遞一個正則表達式作爲參數,這樣方法將會根據正則表達式去拆分字符串

          -         不需要設置全局匹配g,也會全部都拆分

例:根據任意字母拆分字符串

var str = "1a2b3c4d5e";
var result = str.split(/[A-z]/);  //根據任意字母拆分字符串

document.write(result);

2、search()方法

          -        可以搜索字符串中是否含有指定內容,有則返回指定內容的第一個值的索引值,無則返回-1

          -        可以接受一個正則表達式作爲參數,根據正則表達式去檢索字符串

          -        全局匹配g對該方法無效,只會返回第一個結果

例:搜索字符串中是否含有abc或aec或afc

var str = "avc aec dcs dsf";
result = str.search(/a[bef]c/);  //搜索字符串中是否含有abc或aec或afc

document.write(result);

3、match()方法(可用於爬取信息)

          -        可以根據正則表達式,從一個字符串中將符合條件的內容提取出來,將結果保存在數組裏

          -        默認情況下match只會找到第一個符合要求的內容,找到就停止檢索

          -        設置正則表達式爲全局匹配模式g,就會匹配所有的內容

例:提取字符串中的所有字母

var str = "1a2b3c4d5e6fg";
result = str.match(/[A-z]/);    //提取字符串中的第一個字母
result = str.match(/[A-z]/g);   //提取字符串中的所有字母

document.write(result);    

4、replace()方法

          -        可以將字符串中指定內容替換爲新的內容,默認只會替換符合要求的第一個

          -        replace(a,b)  參數a->被替換內容,參數b->新內容

例:替換字符串中的所有a爲@

var str = "1aadacafdfwfcsdve2134fsdasfwe";
result = str.replace(/a/,"@");   //只有第一個a被替換
result = str.replace(/a/g,"@");  //所有a被替換

document.write(result);

五、電子郵箱和手機號碼的格式測試

正則表達式 電子郵箱和手機號碼的格式測試https://blog.csdn.net/qq_41604269/article/details/83576875

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章