日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

正则表达式基本概念

發布時間:2025/3/17 编程问答 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 正则表达式基本概念 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
引用文字

什么是正則表達式

正則表達式是一個描述字符模式的對象。主要用來驗證客戶端的輸入數據,用戶填寫完表單信息提交后,就會傳遞給后臺服務器,服務器會通過PHP等后臺腳本進行處理,因為客戶端驗證,節約了大量的服務器資源,并提供了良好的用戶體驗。

創建正則表達式

創建正則表達式有兩種方法:

  • 使用RegExp構建函數接收兩個參數:一個是要匹配的字符串,一個是模式修飾符(可選)
    var pattern = new RegExp('box');
  • 字面量方式創建,直接使用兩個斜杠。在第二個斜杠后面加上模式修飾符(可選)
    var pattern = /box/ flags; //兩個斜杠和box之間不能有空格
  • 模式修飾符的可選參數:

    參數含義
    g全局模式(global)
    i不區分大小寫(case-insensitive)
    m多行模式(multiline)

    測試正則表達式

    exct() 接收一個參數,該參數和模式匹配,把模式作為數組返回;未匹配到返回null
    test() 接收一個參數,該參數和模式匹配,返回true,否則返回false

    使用字符串的正則表達式方法

    String對象中的正則表達式方法:

    方法含義
    match(pattern)返回匹配到模式中的字符串或null
    replace(pattern,replacement)用replacement替換pattern
    search(pattern)返回字符串中pattern開始的位置
    split(pattern)返回用空格拆分的數組

    例:

    var pattern = /box/ig; var str = "This is Box! This is Box!"; alert(str.match(pattern)); //Box Box

    開啟全局模式,將所有匹配的字符串組合成數組;
    未開啟全局模式,匹配到第一個字符串就返回。

    var pattern = /box/ig; var str = "This is Box! This is Box!"; alert(str.replace(pattern,'Tom')); //This is Box! This is Box!

    開啟全局模式,將匹配到的字符串全部替換掉;
    未開啟全局模式,只替換掉第一個查找到的字符串。

    var pattern = /box/i; var str = "This is Box! This is Box!"; alert(str.search(pattern)); //8

    查找返回的位置:查到返回對應的位置,未查到返回-1;無需全局模式。

    var pattern = / /i; var str = "This is Box! This is Box!"; alert(str.split(pattern));

    返回用空格拆分的數組

    RegExp對象的靜態屬性:

    屬性短名含義
    input$_當前被匹配的字符串
    lastMatch$&最后一個匹配字符串
    lastParen$+最后一對圓括號內的匹配子串
    leftContext$`最后一次匹配前的字符串
    multiline$*用于指定是否所有的表達式都用于多行的,返回布爾值
    rightContext$'最后一次匹配之后的字符串

    所有的屬性都可以用短名來操作,其中$_可以用點表示法來操作,其他都不可以。

    正則表達式元字符是包含特殊含義的字符,可以控制匹配模式的方式。反斜杠后的元字符將失去其含義。

    獲取控制

    字符類:單個字符和數字

    元字符/元符號匹配情況
    .匹配除換行符號外的任意字符
    [a-zA-Z0-9]匹配方括號中任意字符
    1匹配不是方括號中任意字符
    d匹配任意數字和[0-9]相同
    D匹配非數字和2相同1
    w匹配字母和數字及_
    W匹配非字母和數字及_

    字符類:空白字符

    元字符/元符號匹配情況
    0匹配null字符
    b匹配空格字符
    f匹配進紙字符
    n匹配換行符
    r匹配回車字符
    t匹配制表符
    s匹配空白字符、空格、制表符和換行符
    S匹配非空白字符

    字符類:替代字符

    元字符/元符號匹配情況
    this\where\logo匹配 this 或 where 或 logo 中任意一個,``必須用分組符號包含起來

    字符類:錨字符

    元字符/元符號匹配情況
    ^行首匹配
    $行尾匹配
    A只有匹配字符串開始處
    b匹配單詞邊界,詞在[]內時無效
    B匹配非單詞邊界
    G匹配當前搜索的開始位置
    Z匹配字符串結束處或行尾
    z只匹配字符串結束處

    字符類:重復字符

    元字符/元符號匹配情況
    x?匹配0個或1個x
    x*匹配0個或1個或多個x
    x+匹配1個或多個x
    (xyz)+匹配至少一個(xyz)
    x{m,n}匹配最少m個、最多n個x

    字符類:替代字符

    元字符/元符號匹配情況
    (string)分組表示一個字符,用圓括號表示
    1 或$1匹配第一個分組中的內容
    2 或$2匹配第二個分組中的內容
    3 或$3匹配第三個分組中的內容

    貪婪和惰性(非貪婪)

    貪婪是盡可能多的匹配內容,惰性(非貪婪)這是盡可能少的匹配內容
    貪婪是從結尾開始匹配,惰性(非貪婪)是從開頭開始匹配

    貪婪惰性
    ++?
    ??
    **?
    {n}{n}?
    {n,}{n,}?
    {n,m}{n,m}?

    下面例子匹配8和8中的內容,把他替換成QQ

    var pattern = /8(.+?)8/g; var str = 'This is 8google8, That is 8google8, There is 8google8'; var result = str.replace(pattern,'QQ'); document.write(result); 輸出結果:This is QQ, That is QQ, There is QQ

    錯誤匹配:8google, That is 8換成QQ,google不變,8, There is 8替換成QQ,google8不變,就是我們看到的結果。

    var pattern = /8(.+?)8/g; var str = 'This is 8google, That is 8google8, There is 8google8'; var result = str.replace(pattern,'QQ'); document.write(result); 輸出結果:This is QQgoogleQQgoogle8

    錯誤匹配:8google8換成QQ,google不變,8, That is 8替換成QQ,google不變,8, There is 8替換成QQ,google8不變,就是我們看到的結果。

    var pattern = /8(.+?)8/g; var str = 'This is 8google8google8, That is 8google8, There is 8google8'; var result = str.replace(pattern,'>QQ'); document.write(result); 輸出結果:This is QQgoogleQQgoogleQQgoogle8
  • a-zA-Z0-9 ?
  • 0-9 ?
  • 總結

    以上是生活随笔為你收集整理的正则表达式基本概念的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。