正则表达式

1、正则表达式概述

  • 什么是正则表达式
    正则表达式,Regular Expression,是一种字符串匹配模式,是由元字符或限定符组成的一个式子,用来检索、替换符合某个模式的文本。
  • 组成
    正则表达式由普通字符和特殊字符(元字符)组成。
  • 作用
    字符串匹配:给定的字符串是否符合正则表达式的过滤逻辑;
    字符串提取:从字符串中获取我们想要的特定部分,如提取邮箱信息、手机号码等
    字符串替换:替换字符串中的敏感词等

2、元字符

2.1 常用元字符
常用的元字符:
  .   表示除了\n以外的任意一个字符
  []  表示范围
       [0,9]   表示09之间的任意一个数字
       [a-z]   表示所有的小写字母中的任意一个
       [A-Z]   表示所有的大写字母中的任意一个
       [a-zA-Z]    表示所有的字母中的任意一个,包括大写字母和小写字母
               特别地,[]可以表示去掉元字符的特殊含义,如[.]就代表一个.
  |   表示或者
       如:[0-9]|[a-zA-Z] 表示数字或字母中的一个

  ()  表示分组,提升优先级
       如:([0-9])([a-z])([1-5]) 从左边开始计算,分三组

   \d  表示数字中的一个
   \D  表示非数字
   \s  表示空白符中的一个
   \S  表示非空白符
   \w  表示非特殊字符
   \W  表示特殊字符
   \b  表示单词的边界
2.2 限定符
表达次数的元字符,也称为限定符,用于限定前面的元素出现的次数
  *   表示前面的表达式出现了0次或多次,即任意次
      如:[a-z][0-9]*    表示小写字母中的任意一个,后面要么有数字,要么没有数字

  +   表示前面的表达式出现了一次或多次,即至少出现一次
      如:[a-z][9]+     表示小写字母中的任意一个,后面至少有一个9或有多个9

  ?   表示前面的表达式出现了0次或1次,另一层含义是:阻止贪婪模式
      如:[4][a-z]?

  {}  用于明确指出元素出现的次数
      如:
         {0,}    表示前面的表达式出现了0次或多次,等价于 *
         {1,}    表示前面的表达式出现了1次或多次,等价于 +
         {0,1}   表示前面的表达式出现了0次或1次,等价于 ?
         {5,10}  表示前面的表达式出现了510{5}     表示前面的表达式出现了5^   表示字符串以什么开头,也可以表示取反
      如:
         ^[0-9]  表示以数字开头
         [^0-9]  表示非数字

  $   表示字符串以什么结尾
       如:
         [0-9][a-z]$     表示字符串以小写字母结尾
         

3、JavaScript中正则表达式的使用

3.1 创建正则表达式对象
  • 字面量的方式
var reg = /\d{1,5}/;
var result = reg.test("hello1, world2! ");
console.log(result);
  • 利用创建RegExp对象的方式
var regObj = new RegExp(/\d{1,5}/);
var ret = regObj.test("hello3, world6! ");
console.log(ret);
3.2 常用正则表达式
//	1、验证中文
if (/^[\u4e00-\u9fa5]{2,6}$/.test(pwd)){}
//	2、验证数字
if (/\d/.test(pwd)){}
//  3、验证字母
if (/[a-zA-Z]/.test(pwd)){}
//  4、验证特殊符号
if (/[^0-9a-zA-Z]/.test(pwd)){}
//	5、验证邮箱
if (/^[0-9a-zA-Z_.-]+[@][0-9a-zA-Z_.-]+([.][a-zA-Z]+){1,2}$/.test(email)){}
3.3 匹配模式
/**
 *  在正则表达式中,g表示全局匹配模式
 */
var str = "中国移动:10086;中国联通:10010;中国电信:10000;";
//  显示所有的数字
var array = str.match(/\d{5}/g);
console.log(array);
3.4 分组提取
/**
 * 分组提取
 */
var dateStr = "2021-07-25";
var dateArray = dateStr.match(/(\d{4})[-](\d{2})[-](\d{2})/g);
console.log(RegExp.$3);

/**
 * 邮箱信息提取
 */
var email = "giserDev@163.com.cn";
var emailArray = email.match(/([a-zA-Z0-9_.-]+)[@]([a-zA-Z0-9_-]+)([a-zA-Z_.-]+)/);
console.log(RegExp.$1);
console.log(RegExp.$2);
console.log(RegExp.$3);
3.5 大小写处理
//	在正则表达式中,i表示忽略大小写
var str = "HdhhdH";
var str = str.replace(/h/ig, "f");
console.log(str);
3.4 exec的使用
var str = "中国移动:10086;中国联通:10010;中国电信:10000;";
var reg = /\d{5}/g;
var matchStr = null;
while (matchStr = reg.exec(str)){
    console.log(matchStr[0]);
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值