目標:解決兩個問題
- 不認識,怎麼辦?
- 不會寫,怎麼辦?
/^(?!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...