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

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

