目標:解決兩個問題
- 不認識,怎麼辦?
- 不會寫,怎麼辦?
/^(?!0+(?:.0+)?$)(?:[1-9]d*|0)(?:.d{1,2})?$/
例項化RegExp物件
字面量 :var reg = /is/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…