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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

JavaScript-8(正则表达式)

發(fā)布時間:2025/3/14 javascript 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 JavaScript-8(正则表达式) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

一、正則表達(dá)式

1.定義

  • 對字符串進(jìn)行描述的

2.作用

  • 表單驗證
  • 驗證 郵箱/電話/郵編 ....
  • WEB編輯器
  • 爬蟲、數(shù)據(jù)抓取、小偷程序

3. 定義正則表達(dá)式

  • 直接量
  • 函數(shù)
  • 構(gòu)造函數(shù)

二、 正則表達(dá)式基礎(chǔ)

1.原子

  • 正則表達(dá)式的最小組成單位
  • 普通的字母、數(shù)字、符號 都是原子
  • 轉(zhuǎn)義字符
  • 字符類

2.字符直接量(原子)

  • 原子的重要組成
  • 普通的字母、數(shù)字、符號
  • \n換行
  • \t制表
  • \r回車
  • \v垂直制表
  • \f換頁
  • \\
  • \b 退格符
  • \x00
  • \u0000

3.字符類(原子)

  • \d 數(shù)字 [0-9]
  • \D 除了數(shù)字之外的字符 [^0-9]
  • \w 數(shù)字、字母、下劃線 [0-9a-zA-Z_]
  • \W 除了數(shù)字、字母、下劃線 之外的字符 [^0-9a-zA-Z_]
  • \s 空白符 [\n\t\v\r\f ]
  • \S 除了空白符之外的字母 [^\n\t\v\r\f ]
  • . 除了換行外所有的字符 [^\n\r]
  • [...] [0-9]表示一個范圍,只要有一個滿足即可
  • [^...]除了...都匹配
  • [\b] 匹配退格符

4.重復(fù)(對原子的數(shù)量修飾)

  • + 表示前面原子出現(xiàn)1次或多次 {1,}
  • ? 表示前面的原子出現(xiàn)0次或1次 {0,1}
  • * 表示前面的原子出現(xiàn)0次1次或多次 任意次 {0,}
  • {m} 前面的原子出現(xiàn)m次
  • {m,n} 前面的原子出現(xiàn)m到n次
  • {m,} 前面出現(xiàn)的原子個數(shù)m次以上
  • 貪婪匹配
    • 正則默認(rèn)會貪婪匹配,阻止貪婪匹配在數(shù)量修飾符后面加?
    • /\w+?e/.exec("orangere") 只會匹配orange而不是orangere

5.指定匹配的位置 (對原子位置的修飾)

  • \b 單詞邊界
  • \B 不是單詞邊界
  • ^ 字符串開始邊界
  • $ 字符串結(jié)束邊界
  • 先行斷言(正向預(yù)查) (?=)
  • 負(fù)向先行斷言(負(fù)向預(yù)查) (?!)

    //只能匹配后面的,不能匹配前面console.log(/(?=p)apple/.exec("apple"));//nullconsole.log(/(?=p)apple/.exec("papple"));//nullconsole.log(/apple(?=p)/.exec("applep"));//數(shù)組/*永遠(yuǎn)不可能滿足*/console.log(/^apple(?=p)$/.exec("applep"));//null

6. 選擇修飾符

  • |邏輯或
  • ab(c|d)ef匹配abcef 或 abdef

7. 模式單元 ()

  • 改變優(yōu)先級
  • 把多個原子當(dāng)做一個原子
  • 把模式單元匹配的內(nèi)容暫存內(nèi)存 (?:) 可以取消暫存內(nèi)容
  • 暫存內(nèi)存的內(nèi)容可以被反向引用

    <script>//改變優(yōu)先級console.log(/apple|orange/.test("apple"));//trueconsole.log(/appl(e|o)range/.test("apple"));//falseconsole.log(/appl(e|o)range/.test("applerange"));//trueconsole.log("");//把多個原子當(dāng)做一個原子console.log(/abc{4}/.test("abcccc"));//trueconsole.log(/(abc){4}/.test("abcccc"));//falseconsole.log(/(abc){4}/.test("abcabcabcabc"));//trueconsole.log("");//模式單元的內(nèi)容會 單獨存儲到內(nèi)存中console.log(/abc/.exec("123abc123abc"));/*["abc", index: 3, input: "123abc123abc"]*/console.log(/a(b)c/.exec("123abc123abc"));/*["abc", "b", index: 3, input: "123abc123abc"]*/console.log(/(ab)c/.exec("123abc123abc"));/*["abc", "ab", index: 3, input: "123abc123abc"]*/console.log(/(ab)(c)/.exec("123abc123abc"));/*["abc", "ab", "c", index: 3, input: "123abc123abc"]*/console.log(/(ab)(?:c)/.exec("123abc123abc"));/*["abc", "ab", index: 3, input: "123abc123abc"]*/</script>

8. 修飾符(模式修正符)

  • i 正則表達(dá)式不區(qū)分大小寫
  • m 允許多行(換行被當(dāng)做字符串結(jié)束符)
  • g 全局匹配

    <script>//i 不區(qū)分大小寫console.log(/^aAbB$/.test("aabb"));//falseconsole.log(/^aAbB$/i.test("aabb"));//trueconsole.log("");//m 多行模式 字符串邊界console.log(/^a/.exec("orange\napple"));nullconsole.log(/^a/m.exec("orange\napple"));/*["a", index: 7, input: "orange?apple"]*/console.log(/\w$/m.exec("orange\napple"));/*["e", index: 5, input: "orange?apple"]*/console.log(/\w$/.exec("orange\napple"));/*["a", index: 7, input: "orange?apple"]*/</script>

三、 正則的使用

1.RegExp對象

  • test() true/false
  • exec() 數(shù)組/null

2.String對象

  • search() 匹配成功(第一次滿足正則的位置) 匹配失敗(-1)
  • match() 匹配成功(返回數(shù)組 全局匹配影響) 失敗(null)
  • replace() 替換
  • split() 把字符串分割為數(shù)組

    <script>//searchconsole.log("abc123".search(/\d{2}/));//3console.log("abc123".search(/^\d{2}/));//-1//matchconsole.log("1abc34io".match(/[a-z]{2}/));/*["ab", index: 1, input: "1abc34io"]*/console.log("1abc34io".match(/[a-z](\d)/));/*["c3", "3", index: 3, input: "1abc34io"]*/console.log("1abc34io".match(/[a-z]{2}/g));/* ["ab", "io"]*/console.log("1abc34io".match(/[a-z]{9}/g));//nullconsole.log("");//replaceconsole.log("helloleelag".replace("l","呀"));/*he呀loleelag*/console.log("helloleelag".replace(/l/,"呀"));/*he呀loleelag*/console.log("helloleelag".replace(/l/g,"呀"));/*he呀呀o呀ee呀ag*/console.log("helloleelag".replace(/\w/g,"呀"));/*呀呀呀呀呀呀呀呀呀呀呀*/console.log("");//splitvar message="jim.jack,rose,tom,lili,yanyan";console.log(message.split(","));/*["jim.jack", "rose", "tom", "lili", "yanyan"]*/console.log(message.split(/[,.]/));/*["jim", "jack", "rose", "tom", "lili", "yanyan"]*/</script>

轉(zhuǎn)載于:https://www.cnblogs.com/1666818961-lxj/p/7436764.html

總結(jié)

以上是生活随笔為你收集整理的JavaScript-8(正则表达式)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。