鸿蒙harmonyOS正则表达式使用笔记

Written by

in

文章目录
  • 从给出的文本中,按照既定的相关规则,匹配出符合的数据,其中的规则就是正则表达式,使用正则表达式,可以使得我们用简洁的代码就能实现一定复杂的逻辑,比如判断一个邮箱账号是否符合正常的邮箱账号,再比如判断一个手机号是否正常的手机号,等等,正因为有了正则,得以让文本处理起来更加的简单。 日常开发中主要用来做三件事:匹配、替换、提取。 手机号表单要求用户只能输入11位的数字 (匹配) 过滤掉页面内容中的一些敏感词(替换) 从字符串中获取我们想要的特定部分(提取)等
  • 基础步骤; 定义正则 使用正则 定义正则 // 方式 1:简写 const res1: RegExp = /ArkTS/ // 方式 2:通过实例化的方式创建 const reg2: RegExp = new RegExp(‘ArkTS’)  1. 使用正则 test()方法 用来查看正则表达式与指定的字符串是否匹配 如果正则表达式与指定的字符串匹配 ,返回true,否则false console.log(‘web:’, res.test(‘ArkTS’)) // true console.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 ]表示 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.想要包含小写字母,大写字母 ,数字 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 匹配空格(包括換行符、制表符、空格符等),相等于[trnvf] S 匹配非空格的字符,相当于[^trnvf]
  • 字符串的 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, ‘鸿蒙开发’)) //欢迎大家学习鸿蒙开发,相信大家一定能学好鸿蒙开发!!!
  • 到此这篇关于鸿蒙harmonyOS正则表达式使用的文章就介绍到这了,更多相关harmonyOS正则表达式内容请搜索风君子博客以前的文章或继续浏览下面的相关文章希望大家以后多多支持风君子博客! 您可能感兴趣的文章: 正则表达式匹配任意字符(包括换行符)的写法 正则表达式匹配不包含某些字符串的技巧 匹配中文汉字的正则表达式介绍 正则表达式基本语法详解 最新手机号码、电话号码正则表达式 正则表达式匹配各种特殊字符
  • 目录
    • 前言
    • 基本使用 
    • 元字符
    • 边界符
    • 量词
    • 范围
    • 字符类
    • 替换和修饰符 
    • 总结 

    从给出的文本中,按照既定的相关规则,匹配出符合的数据,其中的规则就是正则表达式,使用正则表达式,可以使得我们用简洁的代码就能实现一定复杂的逻辑,比如判断一个邮箱账号是否符合正常的邮箱账号,再比如判断一个手机号是否正常的手机号,等等,正因为有了正则,得以让文本处理起来更加的简单。

    日常开发中主要用来做三件事:匹配、替换、提取。

    • 手机号表单要求用户只能输入11位的数字 (匹配)
    • 过滤掉页面内容中的一些敏感词(替换)
    • 从字符串中获取我们想要的特定部分(提取)等

    基础步骤;

    • 定义正则
    • 使用正则
    • 定义正则
    // 方式 1:简写
    const res1: RegExp = /ArkTS/
    
    // 方式 2:通过实例化的方式创建
    const reg2: RegExp = new RegExp('ArkTS')

     1. 使用正则

    • test()方法 用来查看正则表达式与指定的字符串是否匹配
    • 如果正则表达式与指定的字符串匹配 ,返回true,否则false
    console.log('web:', res.test('ArkTS')) // true
    console.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 ]表示 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.想要包含小写字母,大写字母 ,数字
    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 匹配空格(包括換行符、制表符、空格符等),相等于[trnvf]
    S 匹配非空格的字符,相当于[^trnvf]

    字符串的 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, '鸿蒙开发')) 
    //欢迎大家学习鸿蒙开发,相信大家一定能学好鸿蒙开发!!!

    到此这篇关于鸿蒙harmonyOS正则表达式使用的文章就介绍到这了,更多相关harmonyOS正则表达式内容请搜索风君子博客以前的文章或继续浏览下面的相关文章希望大家以后多多支持风君子博客!

    您可能感兴趣的文章:

    • 正则表达式匹配任意字符(包括换行符)的写法
    • 正则表达式匹配不包含某些字符串的技巧
    • 匹配中文汉字的正则表达式介绍
    • 正则表达式基本语法详解
    • 最新手机号码、电话号码正则表达式
    • 正则表达式匹配各种特殊字符

    站内搜索