前端正則表達式基礎

目標:解決兩個問題

  • 不認識,怎麼辦?
  • 不會寫,怎麼辦?
/^(?!0+(?:\.0+)?$)(?:[1-9]\d*|0)(?:\.\d{1,2})?$/

實例化RegExp對象

字面量 :var reg = /\bis\b/g;

構造函數:var reg = new RegExp('\\bis\\b','g');

正則基礎——修飾符

g    全局匹配(會查找所有匹配,不會在查找到第一個匹配時就停止)
i    執行對大小寫不敏感的匹配
m    執行多行匹配

正則進階——貪婪模式和非貪婪模式

// 貪婪模式(默認):

'1234ab'.replace(/\d{3,4}/g,'大')

// 非貪婪模式: 量詞後加?

'1234ab'.replace(/\d{3,4}?/g,'大')

正則進階——分組

// 使用()達到分組效果

'xingxing'.replace(/xing{2}/,'大’)

'xingxing'.replace(/(xing){2}/,'大')

正則進階——或

// 使用 | 達到或的效果

Hai|xing

H(ai|xi)ng

正則進階——前瞻和後顧

// 前瞻: exp1(?=exp2)     查找exp2前面的exp1

    'window2003'.replace(/window(?=\d{4})/,'大')

// 負前瞻:  exp1(?!exp2)     查找後面不是exp2的exp1

    'window200'.replace(/window(?!\d{4})/,'大')

// 後顧(js不支持):  (?<=exp2)exp1   查找exp2後面的exp1

    '2003window'.replace(/(?<=\d{4})window/g,'大')

// 負後顧(js不支持):  (?<!exp2)exp1   查找前面不是exp2的exp1

    '200window'.replace(/(?<!\d{4})window/g,'大')

參考資料

可視化工具:https://jex.im/regulex
慕課網視頻教程:https://www.imooc.com/video/1...

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章