js正则表达式

1.字符类

\w 匹配字母数字下划线,相当于[0-9A-Za-z_]

\s 匹配单个空白字符,包括空格、制表符、回车符、换行符

\b 匹配一个词的边界

2.边界符

如果不加任何边界符,则表示包含。以下只要包含即可

javascript 复制代码
    // /123/ 匹配内容是否包含有123
    var rg = /123/
    console.log(rg.test('123'))
    console.log(rg.test('1234'))
    console.log(rg.test('41234'))

3.字符集合[]

字符集合表示有一系列字符可供选择,只要匹配其中一个就可以

3.1 不带边界符:包含任意一个则返回true

javascript 复制代码
var rg = /[abc]/
rg.test('a')
rg.test('ab')
rg.test('abc')
rg.test('abcd')

3.2 存在起止边界符

加了起止边界符表示,只能匹配任意一个字符,a或者b或者c,其他都不行,如下会返回true false false false

javascript 复制代码
// 存在起止边界符:加了起止边界符表示,只能匹配任意一个字符,a或者b或者c,其他都不行,如下会返回true false false false
var rg1 = /^[abc]$/
rg1.test('a')
rg1.test('ab')
rg1.test('abc')
rg1.test('abcd')

3.3 [-]表示取某个范围值

javascript 复制代码
var rg2 = /[a-z]/ // -表示取某个范围值

3.4 [^] 表示取反

javascript 复制代码
var rg3 = /[^a-z]/ // ^表示取反

4.量词符

量词符用来设定某个模式出现的次数

|量词符 |说明 |

  • * 重复零次或更多次
    • 重复一次或更多次
  • ? 重复零次或一次
  • {n} 重复n次
  • {n, m}重复n到m次
javascript 复制代码
var rg = /^[a-z]0*$/
var rg1 = /^[a-z]0+$/
var rg2 = /^[a-z]0?$/
var rg3 = /^[a-z]0{2}$/
var rg4 = /^[a-z]0{1,2}$/

5.分组符号 ()

对字符进行分组,小括号包裹的内容可以看作一个整体。$1表示第一个分组,$2表示第二个,以此类推

javascript 复制代码
var rg = /^abc{1,3}$/; //c匹配1次到3次
var rg1 = /^(abc){1,3}$/; //abc匹配1次到3次

6.正则表达式的参数

思考一个问题:我们需要匹配到某个字符串中所有满足条件的字符,应该如何匹配?可以组合使用,如/a/ig

  • g 全局搜索
  • i 不区分大小写搜索
  • m 多行搜索
  • s 允许.匹配换行符
  • u 使用unicode码的模式进行匹配
  • y 执行"粘性(sticky)"搜索,匹配从目标字符串的当前位置开始

match()匹配到返回的数组:

javascript 复制代码
var rg = /ab/g

'ababab'.match(rg)

7.正则表达式常见的用法

7.1 replace替换

str.replace(regexp|substr, newSubStr|function)

第一个参数可以是正则或者字符串

第二个参数为需要替换的字符串或者一个函数

要求1:将手机号的中间四位替换成*,例如13877283312变成138****3312

分组和replace实现:

javascript 复制代码
  var str = '13877283312'
    console.log(str.replace(/(\d{3})\d{4}(\d{4})/, '$1****$2'))

要求2:单词首字母转为大写(/\b(\w)/g),例如my name is allen, i like code.

通过/\b(\w)/g匹配首字母

javascript 复制代码
    var str = 'my name is allen, i like code'
    console.log( str.replace(/\b(\w)/g, function (m) {
      console.log(m)
      return m.toUpperCase()
    }))

要求3:大于0并且不超过两位小数

javascript 复制代码
   // 大于0并且不超过两位小数
    let str = 0.445;
    let str1 = 0;
    let str2 = 1;
    let str3 = 1.3;
    let reg = /^([0-9]+)\.{0,1}[0-9]{1,2}$/;
    console.log(reg.test(str));
    console.log(reg.test(str1));
    console.log(reg.test(str2));
    console.log(reg.test(str3));
相关推荐
吾爱星辰8 小时前
Kotlin 处理字符串和正则表达式(二十一)
java·开发语言·jvm·正则表达式·kotlin
前端李易安2 天前
正则表达式应用场景与常用正则验证方法汇总
正则表达式
HoneyMoose2 天前
正则表达式匹配英文字符
正则表达式
人生の三重奏2 天前
正则表达式(补充)
正则表达式
沟沟里的农民3 天前
【正则表达式】粗浅学习
正则表达式
一路向北_.3 天前
CTFshow 命令执行 web29~web36(正则匹配绕过)
web安全·正则表达式·ctfshow
神的孩子都在歌唱5 天前
正则表达式中的贪婪模式和非贪婪模式
数据库·mysql·正则表达式
Amo Xiang5 天前
2024 Python3.10 系统入门+进阶(十六):正则表达式
开发语言·python·正则表达式
激动的兔子5 天前
正则表达式的使用示例--Everything文件检索批量重命名工具
正则表达式·everything
学习使我快乐015 天前
Web APIs 6:正则表达式
前端·javascript·正则表达式