鴻蒙harmonyOS正則表達(dá)式使用筆記
前言
從給出的文本中,按照既定的相關(guān)規(guī)則,匹配出符合的數(shù)據(jù),其中的規(guī)則就是正則表達(dá)式,使用正則表達(dá)式,可以使得我們用簡(jiǎn)潔的代碼就能實(shí)現(xiàn)一定復(fù)雜的邏輯,比如判斷一個(gè)郵箱賬號(hào)是否符合正常的郵箱賬號(hào),再比如判斷一個(gè)手機(jī)號(hào)是否正常的手機(jī)號(hào),等等,正因?yàn)橛辛苏齽t,得以讓文本處理起來(lái)更加的簡(jiǎn)單。
日常開(kāi)發(fā)中主要用來(lái)做三件事:匹配、替換、提取。
- 手機(jī)號(hào)表單要求用戶(hù)只能輸入11位的數(shù)字 (匹配)
- 過(guò)濾掉頁(yè)面內(nèi)容中的一些敏感詞(替換)
- 從字符串中獲取我們想要的特定部分(提取)等

基本使用
基礎(chǔ)步驟;
- 定義正則
- 使用正則
- 定義正則
// 方式 1:簡(jiǎn)寫(xiě)
const res1: RegExp = /ArkTS/
// 方式 2:通過(guò)實(shí)例化的方式創(chuàng)建
const reg2: RegExp = new RegExp('ArkTS')1. 使用正則
- test()方法 用來(lái)查看正則表達(dá)式與指定的字符串是否匹配
- 如果正則表達(dá)式與指定的字符串匹配 ,返回true,否則false
console.log('web:', res.test('ArkTS')) // true
console.log('web:', res.test('Java')) // false元字符
元字符指的是在正則表達(dá)式中,有特殊含義的符號(hào)
正則表達(dá)式中絕大多數(shù)的字符都是描述他們本身,比如:
/ArkTS/ // 表示 ArkTS 這 5 個(gè)字母
有一些具有特殊含義的字符,可以極大的提高正則表達(dá)式的靈活性和功能,比如:
/[a-z]/ // 只能是 a-z中的字母
像上面的 [ ] , - 就是元字符,接下來(lái)咱們來(lái)看看有哪些常用的元字符
邊界符
則表達(dá)式中的邊界符(位置符)用來(lái)提示字符所處的位置,主要有兩個(gè)字符
| 邊界符 | 說(shuō)明 |
| Λ | 表示匹配行首的文本(以誰(shuí)開(kāi)始) |
| $ | 表示匹配行尾的文本(以誰(shuí)結(jié)束) |
如果 ^ 和 $ 在一起,表示必須是精確匹配
// 元字符之邊界符
// 1. 匹配開(kāi)頭的位置 ^
const reg = /^ArkTS/
console.log('res:', reg.test('ArkTS語(yǔ)法')) //true
console.log('res:', reg.test('學(xué)習(xí)ArkTS')) //false
console.log('res:', reg.test('學(xué)習(xí)ArkTS語(yǔ)法')) //false
console.log('res:', reg.test('Ar')) //false
// 2. 匹配結(jié)束的位置 $
const reg1 = /ArkTS$/
console.log('res:', reg1.test('ArkTS語(yǔ)法')) //false
console.log('res:', reg1.test('學(xué)習(xí)ArkTS')) //true
console.log('res:', reg1.test('學(xué)習(xí)ArkTS語(yǔ)法')) //false
console.log('res:', reg1.test('Ar')) //false
// 3. 精確匹配 ^ $
const reg2 = /^ArkTS$/
console.log('res:', reg2.test('ArkTS語(yǔ)法')) //false
console.log('res:', reg2.test('學(xué)習(xí)ArkTS')) //false
console.log('res:', reg2.test('學(xué)習(xí)ArkTS語(yǔ)法')) //false
console.log('res:', reg2.test('ArkTS')) //true
console.log('res:', reg2.test('Ar')) //false
console.log('res:', reg2.test('ArkTSArkTS')) //false量詞
量詞用來(lái)設(shè)定某個(gè)模式的重復(fù)次數(shù)。
| 量詞 | 說(shuō)明 |
| * | 重復(fù)零次或更多次 |
| + | 重復(fù)一次或更多次 |
| ? | 重復(fù)零次或一次 |
| {n} | 重復(fù) n 次 |
| {n,} | 重復(fù) n 次或更多次 |
| {n,m} | 重復(fù) n 到 m 次 |
基于基礎(chǔ)模版來(lái)看看具體的效果:
// 元字符之量詞
// 1. * 重復(fù)次數(shù) >= 0 次
const reg1 = /^w*$/
console.log('res:', reg1.test('')) //true
console.log('res:', reg1.test('w')) //true
console.log('res:', reg1.test('ww')) //true
console.log('res:', '-----------------------')
// 2. + 重復(fù)次數(shù) >= 1 次
const reg2 = /^w+$/
console.log('res:', reg2.test('')) //false
console.log('res:', reg2.test('w')) //true
console.log('res:', reg2.test('ww')) //true
console.log('res:', '-----------------------')
// 3. ? 重復(fù)次數(shù) 0 || 1
const reg3 = /^w?$/
console.log('res:', reg3.test('')) //true
console.log('res:', reg3.test('w')) //true
console.log('res:', reg3.test('ww')) //false
console.log('res:', '-----------------------')
// 4. {n} 重復(fù) n 次
const reg4 = /^w{3}$/
console.log('res:', reg4.test('')) // false
console.log('res:', reg4.test('w')) // false
console.log('res:', reg4.test('ww')) // false
console.log('res:', reg4.test('www')) //true
console.log('res:', reg4.test('wwww')) // false
console.log('res:', '-----------------------')
// 5. {n,} 重復(fù)次數(shù) >= n
const reg5 = /^w{2,}$/
console.log('res:', reg5.test('')) //false
console.log('res:', reg5.test('w')) //false
console.log('res:', reg5.test('ww')) //true
console.log('res:', reg5.test('www')) //true
console.log('res:', '-----------------------')
// 6. {n,m} n =< 重復(fù)次數(shù) <= m
const reg6 = /^w{2,4}$/
console.log('res:', reg6.test('w')) //false
console.log('res:', reg6.test('ww')) //true
console.log('res:', reg6.test('www')) //true
console.log('res:', reg6.test('wwww')) //true
console.log('res:', reg6.test('wwwww')) //false范圍
表示字符的范圍,定義的規(guī)則限定在某個(gè)范圍,比如只能是英文字母,或者數(shù)字等等,用表示范圍。
| 范圍 | 說(shuō)明 | |
| [abc] | 匹配包含的單個(gè)字符。也就是只有all bllc 這三個(gè)單字符返回true,可以理解為多選1 | |
| [a-z] | 連字符。來(lái)指定字符范圍。[ a-z ]表示 a到226個(gè)英文字母 | |
| [^abc] | 取反符。[^a-z]匹配除了小寫(xiě)字母以外的字符 | |
// 元字符之范圍 []
// 1. [abc] 匹配包含的單個(gè)字符, 多選1
const reg1 = /^[abc]$/
console.log('res:', reg1.test('a')) //true
console.log('res:', reg1.test('b')) //true
console.log('res:', reg1.test('c')) //true
console.log('res:', reg1.test('d')) //false
console.log('res:', reg1.test('ab')) //false
console.log('-----------');
// 2. [a-z] 連字符 單個(gè)
const reg2 = /^[a-z]$/
console.log('res:', reg2.test('a')) //true
console.log('res:', reg2.test('p')) //true
console.log('res:', reg2.test('0')) //false
console.log('res:', reg2.test('A')) //false
console.log('-----------');
// 3. [^a-z] 取反符
const reg5 = /^[^a-z]$/
console.log('res:', reg5.test('a')) //false
console.log('res:', reg5.test('A')) //true
console.log('res:', reg5.test('么')) //true
console.log('-----------');
// 4.想要包含小寫(xiě)字母,大寫(xiě)字母 ,數(shù)字
const reg3 = /^[a-zA-Z0-9]$/
console.log('res:', reg3.test('B')) //true
console.log('res:', reg3.test('b')) //true
console.log('res:', reg3.test('9')) //true
console.log('res:', reg3.test(',')) //false
console.log('-----------');字符類(lèi)
某些常見(jiàn)模式的簡(jiǎn)寫(xiě)方式,區(qū)分字母和數(shù)字
| 字符類(lèi) | 說(shuō)明 |
| \d | 匹配0-9之間的任一數(shù)字,相當(dāng)于[0-9] |
| \D | 匹配所有0-9以外的字符,相當(dāng)于[^0-9] |
| \w | 匹配任意的字母、數(shù)字和下劃線,相當(dāng)于[A-Za-z0-9_] |
| \W | 除所有字母、數(shù)字和下劃線以外的字符,相當(dāng)于[^A-Za-z0-9_] |
| \s | 匹配空格(包括換行符、制表符、空格符等),相等于[\t\r\n\v\f] |
| \S | 匹配非空格的字符,相當(dāng)于[^\t\r\n\v\f] |
替換和修飾符
字符串的 replace 方法,可以結(jié)合正則進(jìn)行字符串的替換。
// 檢索規(guī)則:文本、正則 // 替換內(nèi)容:文本 // 返回值:替換之后的結(jié)果 字符串.replace(檢索規(guī)則,替換內(nèi)容) // 替換和修飾符 const str = '歡迎大家學(xué)習(xí)ArkTS,相信大家一定能學(xué)好ArkTS!!!' // 將 ArkTS 替換位 鴻蒙開(kāi)發(fā)咋寫(xiě)? 分別用正則和字符串作為檢索規(guī)則
使用正則結(jié)合修飾符可以實(shí)現(xiàn)大小寫(xiě)區(qū)分,是否匹配所有
| 修飾符 | 說(shuō)明 |
| i | 單詞 ignore 的縮寫(xiě),正則匹配時(shí)字母不區(qū)分大小寫(xiě) |
| g | 單詞 global 的縮寫(xiě),匹配所有滿足正則表達(dá)式的結(jié)果 |
// 替換和修飾符 const str = '歡迎大家學(xué)習(xí)ArkTS,相信大家一定能學(xué)好ArkTS!!!' // replace 返回值是替換完畢的字符串 console.log(str.replace(/arkts/, '鴻蒙開(kāi)發(fā)')) //歡迎大家學(xué)習(xí)ArkTS,相信大家一定能學(xué)好ArkTS!!! console.log(str.replace(/arkts/i, '鴻蒙開(kāi)發(fā)')) //歡迎大家學(xué)習(xí)鴻蒙開(kāi)發(fā),相信大家一定能學(xué)好ArkTS!!! console.log(str.replace(/arkts/gi, '鴻蒙開(kāi)發(fā)')) //歡迎大家學(xué)習(xí)鴻蒙開(kāi)發(fā),相信大家一定能學(xué)好鴻蒙開(kāi)發(fā)!!! console.log(str.replace(/arkts/ig, '鴻蒙開(kāi)發(fā)')) //歡迎大家學(xué)習(xí)鴻蒙開(kāi)發(fā),相信大家一定能學(xué)好鴻蒙開(kāi)發(fā)!!!
總結(jié)
到此這篇關(guān)于鴻蒙harmonyOS正則表達(dá)式使用的文章就介紹到這了,更多相關(guān)harmonyOS正則表達(dá)式內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
JavaScript中正則表達(dá)式的概念與應(yīng)用
這篇文章主要介紹了JavaScript中正則表達(dá)式的概念與應(yīng)用的相關(guān)資料,需要的朋友可以參考下2017-10-10

