国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

JavaScript正則表達式-基礎入門

Amos / 3411人閱讀

摘要:正則表達式基礎入門字符類,如為匹配任何字符組成的字符重復如為匹配一到三個單詞選擇分組和引用指定匹配位置修飾符直接量字符可用于模式匹配的方法對象基本要素字符類方括號內的任意字符不在方括號內的任意字符除換行符和其他行終止符之外的任意字符任何字

JavaScript正則表達式-基礎入門

字符類,如 /w/ 為匹配任何ASCII字符組成的字符

重復, 如 /w{1,3}/ 為匹配一到三個單詞

選擇、分組和引用

指定匹配位置

修飾符

直接量字符

可用于模式匹配的String方法

RegExp對象

基本要素

字符類
[...] 方括號內的任意字符
1 不在方括號內的任意字符
. 除換行符和其他Unicode行終止符之外的任意字符
w 任何ASCII字符組成的單詞,等價于[a-zA-Z0-9]
W 任何不適ASCII字符組成的單詞,等價于2
s 任何Unicode空白符
S 任何非Unicode空白符的字符,注意w和S不同
d 任何ASCII數字,等價于[0-9]
D 除了ASCII數字之外的任何字符,等價于3
[] 退格直接量(特例)
    // 匹配字符串中的 "b"
    "abc".search( /[b]/ )                    // 1

    // 匹配字符串中的 方括號內規定的數字
    "abc123abc".search( /[2-5]/ )      // 4
重復
{n,m} 匹配前一項至少n次,但不能超過m次
{n, } 匹配前一項n次或者更多次
{n} 匹配前一項n次
? 盡可能多地匹配前一項0或者1次
+ 盡可能多地匹配前一項1次或多次
* 盡可能多地匹配前一項0或多次
{n,m}? 盡可能少地匹配前一項至少n次,但不能超過m次
?? 盡可能少地匹配前一項0或者1次
+? 盡可能少地匹配前一項1次或多次
*? 盡可能少地匹配前一項0或多次
    // 匹配2~4個數字,{n,m}中的逗號兩邊不能有空格
    "a1ab12abc123".search( /d{2,4}/ )               // 4

    // 精確匹配三個字母和一個可選的數字
    "at12a3abcd1abc123".search( /[a-zA-Z]{3}d?/ )   // 6

    // 匹配前后帶有一個或多個空格的字符串"JavaScript"
    "JavaScripttttt is notJavaScript( JavaScript )".search( /s+JavaScripts+/ );       // 32

    // 盡可能多
    "aaa".match( /a+/ );            // ["aaa"]
    // 盡可能少
    "aaa".match( /a+?/ );           // ["a"]
選擇

字符 "|" 用于提供可選擇的字符
注意兩點:

1. 匹配次序 從左到右
2. 如果左邊的選擇匹配成功,就忽略右邊的匹配項
    // 匹配三個數字或者是4個小寫字母
    "1ab12ab123abcd".match( /d{3}|[a-z]{4}/ )              // ["123"]
分組和引用

(...)有三個作用:

1. 把多帶帶的項組合成子表達式
2. 在完成的模式中定義子模式
3. 允許在同一正則表達式的后部引用前面的子表達式 , 使用1代表第一個左括號的內容,2代表第二個左括號的內容,依次類推
    // 1.匹配字符串"Java",其后的"Script"可有可無
    "JavaSScript".match( /Java(Script)?/ )                    // ["Java", undefined]

    // 2.匹配左右為字母中間為數字的字符串,同時取出中間的字符串
    "123abc454cba321".match( /[a-z]+(d+)[a-z]+/ )   // ["abc454cba", "454"]

    // 3.允許在同一正則表達式的后面引用前面的子表達式
    ""Java"S"cript"".match( /[""][^""]*[""]/ );             // [""Java""]    引號左右不匹配
    ""Java"S"cript"".match( /([""])[^""]*1/ );            // [""S"", """]    引號左右匹配
(...) 將幾個項組合為一個單元,這個單元可通過"*"、"+"、"?"和"|"等符號加以修飾
(?:...) 只組合,把項目組合到一個單元,但不記憶與該組相匹配的字符
n 和第n個分組第一次匹配的字符相匹配,組是圓括號中的子表達式,組索引是從左到右的左括號數
指定匹配位置
^ 匹配字符串的開頭,在多行檢索中,匹配一行的開頭
$ 匹配字符串的借位,在多行檢索中,匹配一行的結尾
b 匹配一個單詞的邊界(區分[b]匹配的是退格符)
B 匹配非單詞邊界的位置
(?=p) 零寬正向先行斷言,要求接下來的字符都與p匹配,但不能包括匹配p的那些字符
(?!p) 零寬負向先行斷言,要求接下來的字符不與p匹配

b、^ 和 $ 稱為正則表達式的錨,定位搜索字符串的特定位置

    // 匹配單詞的邊界,即位于w字符和W之間的邊界
    "htmlhtml html".search( /html/ )                // 0
    "htmlhtml html".search( /html/ )             // 4

    // 匹配一個單詞
    " JavaScript".match( /^JavaScript$/ )         // null
    "JavaScript".match( /^JavaScript$/ )          // ["JavaScript"]

(?=p)(?!p)指定接下來的字符是否與p匹配

    // 第二個不能匹配是因為Java后面不是空格符
    "JavaScript is good.".match( /[Jj]ava(Script)?(?=s)/ )             // ["JavaScript", "Script"]
    "Javais good.".match( /[Jj]ava(Script)?(?=s)/ )                      //  null
修飾符
i 執行不區分大小寫的匹配
g 執行一個全局匹配
m 多行匹配模式,^匹配一行的開頭和字符串的開頭,$匹配行的結束和字符串的結束

修飾符用在“/”符號之后

    // i 即為igonre case
    "JAVASCRIPT".match( /javascript/ )              // null
    "JAVASCRIPT".match( /javascript/i )             // ["JAVASCRIPT"]

    // g 即為global
    "JavaScript Java".match( /Java/ )                  // ["Java"]
    "JavaScript Java".match( /Java/g )                // ["Java", "Java"]

    // m 即為multiline
    "JavaScript
Java".match( /^Java$/ )                      // null
    "JavaScript
Java".match( /^Java$/m )                   // ["Java"]
直接量符號
o NUL字符(u0000)
制表符(u0009)
換行符(u00A)
v 垂直制表符(u000B)
f 換頁符(u000C)
回車符(u000D)
xnn 由16進制數nn指定的拉丁字符
uxxxx 由16進制數xxxx指定的Unicode字符
cX 控制字符
可用于模式匹配的String方法
        // search(),返回與之匹配子串的起始位置
        "JavaScript".search( /script/i );                   // 4

        // match() , 返回由匹配結果組成的數組
        "Java is not JavaScript".match( /java(script)?/gi )                 // ["Java", "JavaScript"]

        // replace(), 檢索和替換
        "java is not JavaScript".replace( /java/i , "C++" ).replace( /javascript/i , "C")                   // "C++ is not C"

        // split() , 將字符串拆分為一個子串組成的數組
        " 1  ,    2,    3    ,4     ,     5 ".trim().split( /s*,s*/ )                 // ["1", "2", "3", "4", "5"]
RegExp對象

RegExp()為一個構造函數

    // 第一個參數為 正則表達式的主體部分,第二個參數為 修飾符
    let reg = new RegExp( "java(script)?" , "gi" );
    "Java is not JavaScript".match( reg )                       // ["Java", "JavaScript"]
小結

此文章是參照了《JavaScript: The Definitive Guide》中的第十章,想仔細了解JavaScript的正則表達式可以去翻閱此書籍。

解析一個URL使用/(w+)://([w.]+)/(S*)/

    "Welcome to https://segmentfault.com/t/javascript".match( /(w+)://([w.]+)/(S*)/ )          
    // ["https://segmentfault.com/t/javascript", "https", "segmentfault.com", "t/javascript"]

... ?

a-zA-Z0-9 ?

0-9 ?

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/81818.html

相關文章

  • 前端計劃——JavaScript正則達式快速入門

    摘要:前言正則表達式時處理字符串中常用的手法,本文以簡單的方式,快速展示了中正則相關的基礎知識點。文末還提供了幾個簡單的正則相關面試題。接下來是正則部分,注意后面的并不匹配,也就是比如,實際匹配的值是和,在和后面加上,就完成了預期。 前言:正則表達式時處理字符串中常用的手法,本文以簡單的方式,快速展示了JavaScript中正則相關的基礎知識點。文末還提供了幾個簡單的正則相關面試題。個人總結...

    Xufc 評論0 收藏0
  • TRY REGEX:正則達式交互式入門教程 翻譯&解答

    摘要:寫一個正則表達式來測試變量中是否包含字符串。用函數給出不使用字符,但和等價的正則表達式。第十四課標志全局匹配標志第二個常用的標志是全局匹配標志,用字母表示。寫出一個正則表達式來檢驗合法性。非捕獲組的主要用途是給一個組賦予量詞。 TRY REGEX 是一個交互式的正則表達式學習項目項目地址:https://github.com/callumacra...在線地址:http://tryre...

    李義 評論0 收藏0
  • 前端資源系列(4)-前端學習資源分享&前端面試資源匯總

    摘要:特意對前端學習資源做一個匯總,方便自己學習查閱參考,和好友們共同進步。 特意對前端學習資源做一個匯總,方便自己學習查閱參考,和好友們共同進步。 本以為自己收藏的站點多,可以很快搞定,沒想到一入匯總深似海。還有很多不足&遺漏的地方,歡迎補充。有錯誤的地方,還請斧正... 托管: welcome to git,歡迎交流,感謝star 有好友反應和斧正,會及時更新,平時業務工作時也會不定期更...

    princekin 評論0 收藏0
  • 前端文檔收集

    摘要:系列種優化頁面加載速度的方法隨筆分類中個最重要的技術點常用整理網頁性能管理詳解離線緩存簡介系列編寫高性能有趣的原生數組函數數據訪問性能優化方案實現的大排序算法一怪對象常用方法函數收集數組的操作面向對象和原型繼承中關鍵詞的優雅解釋淺談系列 H5系列 10種優化頁面加載速度的方法 隨筆分類 - HTML5 HTML5中40個最重要的技術點 常用meta整理 網頁性能管理詳解 HTML5 ...

    jsbintask 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<