當(dāng)前位置:
首頁(yè) >
前端技术
> javascript
>内容正文
javascript
JavaScript-8(正则表达式)
生活随笔
收集整理的這篇文章主要介紹了
JavaScript-8(正则表达式)
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
一、正則表達(dá)式
1.定義
- 對(duì)字符串進(jìn)行描述的
2.作用
- 表單驗(yàn)證
- 驗(yàn)證 郵箱/電話/郵編 ....
- WEB編輯器
- 爬蟲、數(shù)據(jù)抓取、小偷程序
3. 定義正則表達(dá)式
- 直接量
- 函數(shù)
- 構(gòu)造函數(shù)
二、 正則表達(dá)式基礎(chǔ)
1.原子
- 正則表達(dá)式的最小組成單位
- 普通的字母、數(shù)字、符號(hào) 都是原子
- 轉(zhuǎn)義字符
- 字符類
2.字符直接量(原子)
- 原子的重要組成
- 普通的字母、數(shù)字、符號(hào)
- \n換行
- \t制表
- \r回車
- \v垂直制表
- \f換頁(yè)
- \\
- \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]表示一個(gè)范圍,只要有一個(gè)滿足即可
- [^...]除了...都匹配
- [\b] 匹配退格符
4.重復(fù)(對(duì)原子的數(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)的原子個(gè)數(shù)m次以上
- 貪婪匹配
- 正則默認(rèn)會(huì)貪婪匹配,阻止貪婪匹配在數(shù)量修飾符后面加?
- /\w+?e/.exec("orangere") 只會(huì)匹配orange而不是orangere
5.指定匹配的位置 (對(duì)原子位置的修飾)
- \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)先級(jí)
- 把多個(gè)原子當(dāng)做一個(gè)原子
- 把模式單元匹配的內(nèi)容暫存內(nèi)存 (?:) 可以取消暫存內(nèi)容
暫存內(nèi)存的內(nèi)容可以被反向引用
<script>//改變優(yōu)先級(jí)console.log(/apple|orange/.test("apple"));//trueconsole.log(/appl(e|o)range/.test("apple"));//falseconsole.log(/appl(e|o)range/.test("applerange"));//trueconsole.log("");//把多個(gè)原子當(dāng)做一個(gè)原子console.log(/abc{4}/.test("abcccc"));//trueconsole.log(/(abc){4}/.test("abcccc"));//falseconsole.log(/(abc){4}/.test("abcabcabcabc"));//trueconsole.log("");//模式單元的內(nèi)容會(huì) 單獨(dú)存儲(chǔ)到內(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對(duì)象
- test() true/false
- exec() 數(shù)組/null
2.String對(duì)象
- search() 匹配成功(第一次滿足正則的位置) 匹配失敗(-1)
- match() 匹配成功(返回?cái)?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(正则表达式)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Java面向对象(二、继承)
- 下一篇: 现在的人工智能逆天到什么地步了?