鴻蒙harmonyOS:筆記 正則表達式

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

基本使用?

???基礎步驟;
  1. 定義正則
  2. 使用正則
  3. 定義正則
// 方式 1:簡寫
const res1: RegExp = /ArkTS/// 方式 2:通過實例化的方式創建
const reg2: RegExp = new RegExp('ArkTS')

?1. 使用正則

  • test()方法 用來查看正則表達式與指定的字符串是否匹配
  • 如果正則表達式與指定的字符串匹配 ,返回true,否則false
console.log('web:', res.test('ArkTS')) // trueconsole.log('web:', res.test('Java')) // false

元字符

????????元字符指的是在正則表達式中,有特殊含義的符號
正則表達式中絕大多數的字符都是描述他們本身,比如:
/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

量詞

????????量詞用來設定某個模式的重復次數。

量詞說明
*重復零次或更多次
+重復一次或更多次
?重復零次或一次
{n}重復?n?
{n,}重復?n?次或更多次
{n,m}重復?n?到?m?

基于基礎模版來看看具體的效果:
// 元字符之量詞
// 1. * 重復次數 >= 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. + 重復次數 >= 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. ? 重復次數 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,} 重復次數 >= 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 =< 重復次數 <= 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

范圍

????????表示字符的范圍,定義的規則限定在某個范圍,比如只能是英文字母,或者數字等等,用表示范圍。

范圍說明
[abc]匹配包含的單個字符。也就是只有all bllc?這三個單字符返回true,可以理解為多選1
[a-z]連字符。來指定字符范圍。[?a-z?]表示?a226個英文字母
[^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.想要包含小寫字母,大寫字母 ,數字
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('-----------');

字符類

????????某些常見模式的簡寫方式,區分字母和數字

字符類說明
\d匹配0-9之間的任一數字,相當于[0-9
\D匹配所有0-9以外的字符,相當于[^0-9
\w匹配任意的字母、數字和下劃線,相當于[A-Za-z0-9_]
\W除所有字母、數字和下劃線以外的字符,相當于[^A-Za-z0-9_
\s匹配空格(包括換行符、制表符、空格符等),相等于[\t\r\n\v\f]
\S匹配非空格的字符,相當于[^\t\r\n\v\f]

替換和修飾符?

????????字符串的 replace 方法,可以結合正則進行字符串的替換。

// 檢索規則:文本、正則
// 替換內容:文本
// 返回值:替換之后的結果字符串.replace(檢索規則,替換內容)// 替換和修飾符const str = '歡迎大家學習ArkTS,相信大家一定能學好ArkTS!!!'// 將 ArkTS 替換位 鴻蒙開發咋寫? 分別用正則和字符串作為檢索規則
使用正則結合修飾符可以實現大小寫區分,是否匹配所有
修飾符說明
i單詞?ignore?的縮寫,正則匹配時字母不區分大小寫
g單詞?global?的縮寫,匹配所有滿足正則表達式的結果
// 替換和修飾符
const str = '歡迎大家學習ArkTS,相信大家一定能學好ArkTS!!!'
// replace 返回值是替換完畢的字符串
console.log(str.replace(/arkts/, '鴻蒙開發'))
//歡迎大家學習ArkTS,相信大家一定能學好ArkTS!!!console.log(str.replace(/arkts/i, '鴻蒙開發')) 
//歡迎大家學習鴻蒙開發,相信大家一定能學好ArkTS!!!console.log(str.replace(/arkts/gi, '鴻蒙開發')) 
//歡迎大家學習鴻蒙開發,相信大家一定能學好鴻蒙開發!!!console.log(str.replace(/arkts/ig, '鴻蒙開發')) 
//歡迎大家學習鴻蒙開發,相信大家一定能學好鴻蒙開發!!!

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/899602.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/899602.shtml
英文地址,請注明出處:http://en.pswp.cn/news/899602.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

[首發]烽火HG680-KD-海思MV320芯片-2+8G-安卓9.0-強刷卡刷固件包

烽火HG680-KD-海思MV320芯片-28G-安卓9.0-強刷卡刷固件包 U盤強刷刷機步驟&#xff1a; 1、強刷刷機&#xff0c;用一個usb2.0的8G以下U盤&#xff0c;fat32&#xff0c;2048塊單分區格式化&#xff08;強刷對&#xff35;盤非常非常挑剔&#xff0c;usb2.0的4G U盤兼容的多&a…

Python-數據處理

第十五章 生成數據 安裝Matplotlib&#xff1a;通過pip install matplotlib命令安裝庫。繪制折線圖的核心語法為&#xff1a; import matplotlib.pyplot as plt x_values [1, 2, 3] y_values [1, 4, 9] plt.plot(x_values, y_values, linewidth2) plt.title(&quo…

Java基礎-23-靜態變量與靜態方法的使用場景

在Java中&#xff0c;static關鍵字用于定義靜態變量和靜態方法。它們屬于類本身&#xff0c;而不是類的某個實例。因此&#xff0c;靜態成員可以通過類名直接訪問&#xff0c;而無需創建對象。以下是靜態變量與靜態方法的常見使用場景&#xff1a; 一、靜態變量的使用場景 靜態…

大模型架構記錄12【Agent實例-tool】

運行根目錄下幾個ipynb文件- Learn-Agent.ipynb- 學習《Custom agent 自定義代理》部分- v1-Create-Custom-Agent.ipynb- v2-Create-Custom-Agent.ipynb- 基于v1&#xff0c;新增一些職位描述&#xff08;JD&#xff09;信息- v3-Create-Custom-Agent.ipynb- 基于v2&#xff0c…

在MCU工程中優化CPU工作效率的幾種方法

在嵌入式系統開發中&#xff0c;優化 CPU 工作效率對于提升系統性能、降低功耗、提高實時性至關重要。Keil 作為主流的嵌入式開發工具&#xff0c;提供了多種優化策略&#xff0c;包括 關鍵字使用、內存管理、字節對齊、算法優化 等。本文將從多個方面介紹如何在 Keil 工程中優…

Linux系統下C語言fork函數使用案例

一、fork函數的作用 生成一個子進程&#xff0c;異步執行某個任務&#xff1b; 二、子進程的作用 1、子進程能復制一份父進程的變量、函數&#xff1b; 2、子進程可以和父進程同時并發執行&#xff1b; 函數語法&#xff1a; pid_t fork() 說明&#xff1a;調用后返回一個進程…

MySQL中的CREATE TABLE LIKE和CREATE TABLE SELECT

MySQL中的CREATE TABLE LIKE和CREATE TABLE SELECT CREATE TABLE LIKECREATE TABLE SELECT CREATE TABLE LIKE CREATE TABLE ... LIKE可以用來復制表結構&#xff0c;源表上的索引和約束也會復制。CREATE TABLE ... LIKE不能復制表數據。CREATE TABLE ... LIKE只能復制基表&…

Java開發者指南:深入理解HotStuff新型共識算法

&#x1f9d1; 博主簡介&#xff1a;CSDN博客專家、全棧領域優質創作者、高級開發工程師、高級信息系統項目管理師、系統架構師&#xff0c;數學與應用數學專業&#xff0c;10年以上多種混合語言開發經驗&#xff0c;從事DICOM醫學影像開發領域多年&#xff0c;熟悉DICOM協議及…

opencv圖像處理之指紋驗證

一、簡介 在當今數字化時代&#xff0c;生物識別技術作為一種安全、便捷的身份驗證方式&#xff0c;正廣泛應用于各個領域。指紋識別作為生物識別技術中的佼佼者&#xff0c;因其獨特性和穩定性&#xff0c;成為了眾多應用場景的首選。今天&#xff0c;我們就來深入探討如何利…

wfs.js之h264轉碼mp4分析

準備源文件 下載源文件 git clone https://github.com/ChihChengYang/wfs.js.git編譯后得到wfs.js這個文件 調用 在demo/index.html中&#xff0c;前端對wfs.js進行了調用 var video1 document.getElementById("video1"), wfs new Wfs(); wfs.attachMedia…

協程 Coroutine

協程是 C20 引入的新特性。 文章目錄 基本概念std::coroutine_handlepromise 類型co_yield 基本用法 優勢異步 TCPco_await 基本概念 協程&#xff08;Coroutine&#xff09;是一種比線程更加輕量級的并發編程模型。協程的調度由程序員手動控制。 異步不是并行&#xff0c;但…

uniapp中的流式輸出

一、完整代碼展示 目前大多數的ai對話都是流式輸出&#xff0c;也就是對話是一個字或者多個字逐一進行顯示的下面是一個完整的流式顯示程序&#xff0c;包含的用戶的消息發出和ai的消息回復 <template><view class"chat-container"><view class&quo…

洛谷題單1-P5703 【深基2.例5】蘋果采購-python-流程圖重構

題目描述 現在需要采購一些蘋果&#xff0c;每名同學都可以分到固定數量的蘋果&#xff0c;并且已經知道了同學的數量&#xff0c;請問需要采購多少個蘋果&#xff1f; 輸入格式 輸入兩個不超過 1 0 9 10^9 109 正整數&#xff0c;分別表示每人分到的數量和同學的人數。 輸…

JS 手撕題高頻考點

前端面試中&#xff0c;JS 手撕題是高頻考點&#xff0c;主要考察 編程能力、算法思維、JS 核心知識。以下是最常見的手撕題分類 代碼示例&#xff1a; 目錄 &#x1f4cc; 1. 手寫函數柯里化&#x1f4cc; 2. 手寫 debounce&#xff08;防抖&#xff09;&#x1f4cc; 3. 手寫…

【STM32】知識點介紹一:硬件知識

文章目錄 一、電源引腳簡介二、電平信號三、電路分析 一、電源引腳簡介 VCC、GND、VDD和VSS是電子電路中常見的術語&#xff0c;代表著不同的電源引腳或電壓。 VCC&#xff08;Voltage at the Common Collector&#xff09;&#xff1a;VCC是指集電極&#xff08;Collector&am…

3. 列表元素替換

【問題描述】給定一個列表&#xff0c;將列表中所有的偶數替換為0 【輸入形式】輸入一行&#xff0c;包含若干個整數&#xff0c;用空格分隔 【輸出形式】輸出替換后的列表&#xff0c;每個元素用空格分隔 【樣例輸入】1 2 3 4 5 6 7 8 9 10 【樣例輸出】1 0 3 0 5 0 7 0 9…

問題的根源還是解題的方案

周末的早上照例是要早醒 debug 代碼的&#xff0c;仿佛又回到了 2014 年… 古人幾天甚至幾個月不洗澡&#xff0c;不會臭嗎&#xff1f;有沒有可能古人沒有化纖類衣服&#xff0c;且古人的純天然生活環境其身體菌群和現代人不同&#xff0c;古人就像健康的野生動物一樣即使不洗…

虛擬機安裝linux系統無法上網的解決方法

在虛擬環境中運行Linux系統時&#xff0c;有時會遇到網絡連接問題&#xff0c;特別是在使用虛擬機軟件如VMware或VirtualBox時。本文將詳細介紹一種針對“虛擬機安裝Linux系統無法上網”問題的解決方案&#xff0c;以CentOS 6.5為例&#xff0c;適用于其他基于NAT模式的虛擬機環…

子網劃分淺度解析

文章目錄 ip地址的組成不同類型ip地址的范圍子網掩碼默認子網掩碼子網掩碼如何作用的&#xff1f;默認子網掩碼怎么作用&#xff1f; ip地址的組成 ip地址一般寫作4位點分十進制&#xff08;x.x.x.x&#xff09;&#xff0c;他們由32位二進制組成&#xff0c;每個x由8位二進制…

什么是 SEO(搜索引擎優化)?

您有網站嗎&#xff0c;或者您正在考慮創建一個網站&#xff1f;您想吸引更多人加入您的業務嗎&#xff1f;如果答案是肯定的&#xff0c;那么毫無疑問&#xff1a;SEO 應該是您營銷工作的一部分。這是建立品牌和吸引用戶訪問您的網站的好方法。但它實際上意味著什么呢&#xf…