正则表达式初体验

185 阅读3分钟

这是我参与11月更文挑战的第6天,活动详情查看:2021最后一次更文挑战

也叫规则表达式,按照一定的规则组成的一个表达式,这个表达式的作用主要是匹配字符串的,在大多数变成语言中都可以使用,正则表达式的组成:由元字符或者限定符组成的一个式子

语法

元字符:

  • .表示出来\n以外的任意一个字符
  • []表示范围
    • [0-9] 表示0到9之间的任意一个数字
    • [a-z]表示所有小写字母中的任意一个
    • [A-Z]表示所有大写字母中的任意一个
    • [a-zA-Z]表示所有字母中的任意一个
    • []或者表示把正则表达式中的元字符的意义干掉,[.]就是一个.
  • | 或者
    • [0-9]|[a-z]表示要么是一个数字,要么是一个小写的字母
  • ()表示分组,提升优先级

限定符:

  • * 表示前面的表达式出现0到多次
  • + 表示前面的表达式出现1到多次
  • ?表示的是前面的表达式出现0到1次,最少是0次,最多是1次,另一个含义:阻止贪婪模式
  • {} 更加明确前面表达式出现的次数
    • 表示前面的表达式出现0次到多次,和*一样
    • {1,}表示前面的表达式出现1到多次,和+一样
    • {0,1}表示前面的表达式出现0到1次,和?一样
    • {5,10}表示前面的表达式出现5到10次
    • {4}表示前面的表达式出现4次
  • ^表示以什么开始,或者是取非(取反)
    • ^[0-9]以数字开始
    • [^0-9]取反,非数字
    • ^[a-z]以小写字母开始
    • [^a-z]取反,非小写字母
  • $表示以什么结束
    • ^[0-9][a-z]$ 相当于严格模式
  • \d 数字中的任意一个
  • \D非数字中的一个
  • \s空白符中的一个
  • \S非空白符中的一个
  • \w 非特殊符号
  • \W特殊符号 _下划线不是特使字符
  • \b单词的边界

例子

  • 邮箱正则表达式
  • 中文正则表达式
    • [\u4e00-\u9fa5] 代表中文一个字 [一-龥] 一对应的u4e00 通过escape方法能看到汉字的编码,通过unescape可以解码

      正则表达式中:g表示全局模式匹配 正则表达式中:i表示的是忽略大小写

使用

创建正则表达式对象:

1)通过构造函数创建 var reg=new RegExp(/^\d{1,6}/);//js中,正则表达式用//包围2)字面量的方式创建varregs=/[14]1,3/); //在js中,正则表达式用//包围 2)字面量的方式创建 var regs=/^[1-4]{1,3}/; //在js中,正则表达式用//包围

对象创建完毕,调用test方法验证字符串是否匹配

正则表达式的各种方法

str.match(reg); 提取字符串中符合正则表达式的字符串,返回数组

console.log(RegExp.$3);提取第几组,和上面的match配合使用

str.replace(reg,str);将字符串中符合正则表达式的字符串替换成其他字符串