Javascript中正则表达式

一、正则表达式的组成

  • 什么是正则表达式?
    简单来说正则表达式是一个字符串、是一个对字符串进行处理的的字符串。

  • 字符串的处理
    匹配: match
    提取: match
    替换:replace
    切割:split

  • 组成部分
    边界词
    字符
    数量
    修饰词
    分组

二、数量词的使用

  • 数量词是用在字符的后面,用来定义这个字符的个数的
  • [a]{n} 表示a出现n次
  • [a]{n,} 表示a至少出现n次
  • [a]{n,m} 表示a至少出现n次,最多出现m次
  • [a] ? 表示a出现0次或则1次
  • [a]* 表示a出现0次或者多次
  • [a]+ 表示a出现1次或则多次

下面展示 示例代码

//验证一个手机号码是否合法
//要求必须是1开头的11位数字,第二位数字3-9
function Tel(){
	let Tels=/1[3-9][0-9]{9}/;
	let t=div.match(Tels);
	if(t){
	alert("是一个合法的手机号码");
	}else{
	aler("不是一个合法的手机号码");
	}
}

三、贪婪性数量词和懒惰性数量词

  1. 贪婪性数量词
    javascript中默认的就是贪婪性数量
    而在Java中数量词后用+表示
  2. 懒惰性数量词
    {3,}?数量是3次及以上,但尽可能少
    {3,10}?数量是3到10次,但尽可能少
    ?? 数量是0次或者1次,但尽可能少
    *?数量是0次或者多次,但尽可能少
    +?数量是1次或则多次,但尽可能少

下面展示一下 贪婪性和懒惰性的区别

let s = "bdbcdebcerd";
      let regex =/b[a-z]*d/;
        let t = s.match(regex);
        console.log(t);
        //输出结果 bddcdebcerd 默认贪婪性的
        //let regex =/b[a-z]*?d/;  *?数量是0次或者多次,尽可能少;
        //s值有多个bd重复的,贪恋型是匹配输出全部,懒惰性输出结果为ad;

四、边界词的使用

  1. 一行的开头 ^
  2. 一行的结尾 $
    加个^$符号,代表整行匹配,必须全部一样,否则结果为null,如下代码所示,如果s的值后面再加上三个"1";
 	let s = "bdbcdebcerd111";
       let regex =/b[a-z]*d/;     //如果没加^$标识,则输出为bdbcdebcerd
         let t = s.match(regex);  //如果加了 let regex =/^b[a-z]*d$/; 输出结果为null
         console.log(t);
  1. 单词边界\b
    表示单词的边界,用于取出内容中N个数字的单词.
let a="wo ai ni zhong guo "
let b=/\b[a-z]{2}\b/gi;
let c= a.match(b);
console.log(c);
  //输出结果为wo ai ni
  //此用法对中文没有意义

五、分组及分组的捕获

  • 通过案列来解释分组及分组的捕获
    使用()对正则表达式分组
    整个表达式默认是一个分组,下标默认是0
    每一个分组都有一个默认的下标
    下标是从0开始的连续的整数
    由于一般情况下,整个表达式分组的括号是不写的,所以一般我们看到的第一 个括号就是第二组,下标自然就为1
    拿到下标后可以用来捕获分组
    let a = abbc  //affc  //aooc 
    let b=/  a(.)\1c/;		// \1是代表下标1的值, 重复前面字符一次
    let c=a.match(b);
    

六、断言的使用

- 案列说明断言的使用
let msg ="帮别人代打游戏,tel:13512345678,qq:546711334 wx:1234567890"

//如何从字符串中找到tel 或qq之一

let a =/(?<=tel:)\b{11}/g;   //单反()中问号开头,不是分组,
						    // 而是断言 <表示前面(左边) 
 //如果(?!=tel:)则!表示"不是"tel的数字,则输出qq,wx的值
 
let b=mas.match(a);	//前面是tel:开头的\b的11位数字 
 //如果是后边(右边)将改成(?=tel)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值