js入門篇之Regex基礎

來源:互聯網
上載者:User

標籤:

定義:正則用於規定在文本中檢索的內容,它是對字串執行模式比對的強大工具

RegExp(Regex) 對象的文法: new RegExp(pattern, attributes);

pattern為一個字串或匹配規則

attributes為可選字串,包含屬性g、i 和 m

g:代表全域匹配 (繼續往下匹配)

i:代表不區分大小寫匹配

m:代表多行匹配,只對^和$模式有用

定義Regex有兩種形式:

  建構函式方式: new RegExp(pattern, attributes); 例:var reg=new RegExp(“abc","g"); 建構函式中的正則可以是常量字串或一個js變數

  普通方式:/pattern/attributes(/正則/屬性) 例:var reg=/abc/g; 普通方式中的正則必須是一個常量字串

每個Regex都有一個 lastIndex 屬性,用於記錄上一次匹配結束的位置(索引值)。

擷取 reg.lastIndex 設定 reg.lastIndex=0;

樣本: var str=‘abcdeabfg’;

var reg=new RegExp(‘ab’,‘g’);

alert(reg.test(str));

alert(reg.lastIndex);//2

元字元:

\d : 匹配任意一個數字,0~9 中的任意一個

\s : 匹配任意一個空白字元

\b : 匹配一個單詞邊界,不匹配任何字元

\w : 匹配任意一個字元( 字母、 數字、底線 ) . : 匹配任意一個字元,除了分行符號( \n )

\n : 尋找分行符號

\u : 通常用來匹配漢字

運算式 "\d","\s","\b","\w",對應的大寫字母表示相反的意義 如:\D 匹配所有的非數字字元

方括弧:

[abc] : 尋找方括弧之間的任何字元。

[^abc] : 尋找任何不在方括弧之間的字元。

[0-9] : 尋找任何從 0 至 9 的數字。

[a-z] : 尋找任何從小寫 a 到小寫 z 的字元。

[A-Z] : 尋找任何從大寫 A 到大寫 Z的字元。

量詞:

n+ : 匹配任何包含至少一個 n 的字串。

n? : 匹配任何包含零個或一個 n 的字串。

n* : 匹配任何包含零個或多個 n 的字串。

n{X} : 匹配包含 X 個 n 的序列的字串。

n{X,Y} : 匹配包含 X 到Y 個 n 的序列的字串。

^n : 匹配任何開頭為 n 的字串。

n$ : 匹配任何結尾為 n 的字串。

其他:

| : 匹配左邊或者右邊

\ : 轉義符 特殊標點符號,在前面加 \ 後,就代表該符號本身

^ 要匹配 "^" 字元本身,請使用 \^

( ) 要匹配小括弧本身,請使用 \( 和 \)其他特殊標點符號 [ ] { } . ? + * |

Unicode編碼16進位的utf-8漢字編碼: 4e00最小中文字元 9fa5最大中文字元

/^[\u4e00-\u9fa5]+$/ //常用漢字編碼範圍

RegExp 對象的方法

test:檢索字串中指定的值 返回 true 或 false reg.test(str);

exec: 檢索字串返回尋找結果的第一個值 reg.exec(str);

compile: 該方法可以重編輯指定的Regex var reg=new RegExp("13[4-9](\\d){8}","g");

//重新編輯Regex reg.compile("13[0-3](\\d){8}","g");

String 對象方法

search:檢索與Regex相匹配的值 用法:str.search(reg); (返回索引值,無-1)

match:返回所有Regex的匹配(加g) 用法:str.match(reg); (返回數組)

replace:替換與Regex匹配的子串 用法:str.replace(reg,"");

split:將字串匹配的部分做分割(去除) 用法:str.split(reg); (返回數組)

<!doctype html><html><head><meta charset="utf-8"><title>標題</title><meta name="keywords" content=""><meta name="description" content=""><style>    *{margin:0; padding:0; list-style:none;}    </style></head><body>    <input id="ipt" type="text" name="" value="">    <button id="btn">驗證</button><script>    // var str1=‘abc12Abc34abc56aBc78‘;    // var reg=new RegExp(‘Abc‘,‘g‘);    // console.log(reg.test(str1));    // console.log(reg.lastIndex);//3    // reg.lastIndex=11;//設定下次匹配的開始位置    // console.log(reg.test(str1));    // console.log(reg.exec(str1));    // console.log(str1.match(reg));//["abc", "Abc", "abc", "aBc"]    // var str3=str1.replace(reg,‘***‘);    // document.write(str3);    // alert(‘abcdef\n123456‘);    // var str2=‘abc12Abc34\nabc56aBc78‘;//使用/n    // var reg2=new RegExp(‘^abc‘,‘gm‘);    // console.log(str2.match(reg2));//返回數組;    var ipt=document.getElementById(‘ipt‘);    var btn=document.getElementById(‘btn‘);    var reg1=/[0-9]{11,12}$/g;//11位到12數字;    var reg2=/\s{1,}/g;//匹配1到N位空白字元;    var reg3=/\bhello\b/g;//匹配單詞邊界,不匹配字元,就是匹配單詞hello;    btn.onclick=function (){        /*if (reg1.test(ipt.value)) {            alert(‘輸入正確‘);        } else{            alert(‘輸入有誤‘);        };*/        if (reg2.test(ipt.value)) {            alert(‘不能含有空格‘);        } else{            alert(‘輸入正確‘);        };        // reg3.lastIndex=0;        // if (reg3.test(ipt.value)) {        //     alert(‘有單詞邊界‘);        // } else{        //     alert(‘沒有單詞邊界‘);        // };    }</script></body></html>

 

js入門篇之Regex基礎

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.