1. 程式人生 > 其它 >正則表示式(一)

正則表示式(一)

一、概述

描述:正則表示式是一種檢索字串的規則,表現為字串的樣子

原理:通過【引數字串】設定檢索規則,在【指定字串】中檢索符合規則的字串

作用:可以用來進行文字搜尋文字替換

語法:/正則表示式主體/修飾符(可選)

本質:正則表示式本質上是物件型別,只不過表現為字串的樣子

例子:

<script>
        //規則:檢索beixi字串
        var reg1 = /beixi/;

        //規則:忽略大小寫的,檢索beixi字串
        var reg2 = /beixi/i;

        console.log(reg1);
        console.log(reg2);
        console.log(typeof reg1);
        console.log(typeof reg2);
</script>

二、常見的方法

正則表示式在實際開發中一般不會單獨使用,而是會配合一些方法來完成某種功能;因為正則表示式的作用是對字串進行操作,所以一般在實際開發中正則表示式會配合字串的search、replace方法來使用

1.search()方法

描述:用於檢索與正則表示式相匹配的子字串,並返回子字串的起始位置(首次出現的位置)

注意:

a.如果能找到返回的是第一次出現的下標

b.如果查詢失敗,返回-1

例子:

<script>
        var str = 'hello World! goodbye  world!';
        var index = str.search(/world/i);
        var index1 = str.search(/worlw/i);
        console.log(index);
        console.log(index1);
</script>

2.replace()方法

描述:讓replace根據引數一的規則進行查詢,並將(滿足規則一的所有的內容)替換為引數二

注意:replace方法本身不會改變原字串,而是會生成新的字串

<script>
        var str = 'hello World! goodbye  world!';

        //在全局裡面去尋找,並且忽略大小寫
        var newStr = str.replace(/world/gi, 'sxt');

        console.log(newStr);
        console.log(str);
</script>

3.match()方法

描述:

  • a.match能夠匹配,符合引數規則的字串第一次出現的資訊
 <script>
        var str = 'hello world! goodbye  world!';
        var info = str.match(/world/i);
        console.log(info);
</script>

  • b.如果是全域性的:match能夠匹配(所有符合引數規則的子字串),並構成集合返回
<script>
        var str = 'hello world! goodbye  world!';
        var info = str.match(/world/gi);
        console.log(info);
</script>

三、修飾符(進階階段一)

描述:修飾符檢索字串時規則的制定者之一,修飾符表示應當按哪種規則進行檢索

型別:常見的修飾符有三種i/g/m

1.i:忽略大小寫的規則

 <script>
        var str = 'Hello Frank! GoodBye Frank!';
        var first_index = str.search(/frank/i);
        console.log(first_index);
</script>

2.g:正則檢索內容時採用全域性匹配,而不是找到第一個就停止

 <script>
        var str = 'hello world! hello xiaoming!hello xiaozhuang';
        // var newStr=str.replace('hello','good');
        while (str.indexOf('hello') != -1) {
            str = str.replace('hello', 'good');
        }
        console.log(str);
        var newStr = str.replace(/hello/g, 'good');
        console.log(newStr);
</script>

3.m:代表(換行匹配兩端)的規則,對^$字元有影響

四、檢索模式(進階階段二)

描述:檢索模式是指(正則表示式主體)可以採用何種方式編寫,也是規則的制定者之一

型別:表示式模式、元字元模式、量詞模式

注意:

a.檢索模式中的幾種模式可以混合使用,來達到精確指定規則的效果

b.在正則主體當中一個[]代表一個字元,一個()代表一個片語

1.表達模式:

描述:表示式模式是指(通過表示式書寫來指定檢索規則)的方式

型別:[abc][0-9](m|n)

  • a.[abc]模式

描述:本模式代表的規則是(存在於中括號中的字元,只要任意一個匹配到即滿足

注意:本模式針對於正則主體,因此中括號必須寫在主體中次才生效

例子1:

 <script>
        var str = '12abc12ABC';
        var newStr = str.replace(/[ab]/gi, '(frank)');
        console.log(newStr);

        var str = '你好,弗蘭克!再見,弗蘭克!';
        var newStr = str.replace(/[弗][蘭][克]/g, '(frank)');
        console.log(newStr);
</script>

例子 2:

<script>
        var str = '12abc12ABC';
        //規則:全域性忽略大小寫檢索兩個挨在一起的字元
        //    第一個必須是1或者2,第二個必須是a或者b
        var newStr = str.replace(/[12][ab]/gi, '(sxt)');
        console.log(newStr);

        //如果字串的首位是字母,就把它替換為0,否則不替換
        var str = 'a123';
        //得到字串的首位
        var firstChar = str.substring(0, 1);

        var newChar = firstChar.replace(/[abcdefghijklmnuvwxyz]/i, '0')
        console.log(newChar);
</script>

  • b.[0-9]模式

在指定字串中進行檢索,查詢任何滿足[0-9]規則的字元或字串。該模式對字母也適用

描述:本模式代表的規則是(存在於範圍內,即滿足)

注意:範圍前面的必須小於後面的,否則報錯

例子:

<script>
        var str = '12abc12ABC';
        var newStr = str.replace(/[12][a-z]/gi, '(frank)');
        console.log(newStr);

        var str = 'a123';
        //得到字串的首位
        var firstChar = str.substring(0, 1);
        var newChar = firstChar.replace(/[a-z]/i, '0')
        console.log(newChar);

        var str = '137abc125abc';
        var newStr = str.replace(/[135][0-9]/gi, '(sxt)');
        console.log(newStr);
</script>

  • c.(m|n)模式

描述:本模式代表的規則是(符合以|分隔的選項之一,即滿足)

注意:本模式不僅可以匹配字元,還可以匹配片語

例子:

<script>
        var str = '12abc12abABC';
        var newStr = str.replace(/(ab|ABC)/g, '(frank)');
        console.log(newStr);

        var password = '4123456';
        var firstChar = password.substring(0, 1);
        var index = firstChar.search(/[a-z]/i);
        if (index == -1) {
            console.log('合法');
        } else {
            console.log('不合法');
        }
</script>

例子2:

 <script>
        //判斷密碼中是否包含字母
        var pwd = '1234abd789';
        if (pwd.search(/[a-z]/i) != -1) {
            console.log('不合法');
        } else {
            console.log('合法');
        }
        var str = '[email protected]';
        var three = str.substring(-7);
        var index = three.search(/@qq.com/i);
</script>