javascript正则表达式多行匹配和RegExp理解

本文详细介绍了如何使用正则表达式进行多行匹配,并解释了正则表达式中的一些关键属性及其作用。通过具体实例演示了正则表达式的多行匹配功能,以及如何利用其属性来控制匹配过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一:多行匹配

很多时候我们可以通过边界符号(^,$,\b,\B)达到我们匹配某些字符串的目的。但是如果字符串有多行呢,这个其实很简单了,只需加个m就指定为多行匹配了。实例:

 

var str = "first second\nthird fourth\nfifth sixth";

var patt = /(\w+)$/gm

console.log(str.match(patt));

结果:

 

["second", "fourth", "sixth"]
如果没有指定m,则只会得到sixth了,加了m后实际上正则表达式是把\n、\r这些也换行和回车当成边界了,可以这么理解

 

 

var str2 = "first second\nthird fourth\nfifth sixth";

var patt2 = /^(\w+)/gm

console.log(str2.match(patt2 ));

 

结果:

 

["first", "third", "fifth"]
没指定m则只能是first了

二:RegExp理解
RegExp有很多属性:
  1.  

    global 表示全局g是否设置

     

  2. ignoreCase 表示i忽略大小是否设置
  3. lastIndex 表示下次匹配将会从哪个位置开始(只有用了test,exec,match这些方法后才会有值,否则为0)
  4. multiline 表示多行m是否设置
  5. source 表示正则表达式的源字符串形式
这些属性基本都不用,因为一看就知道了。可能有点用的是lastIndex这个属性了。我们可以控制这个去匹配我们想要匹配的字符串。
还有一些静态属性:
  1.     
    长名短名描述
    input$_最后匹配的字符串
    lastMatch$&最后匹配的字符
    lastParem$+最后匹配的分组
    leftContent$`上次匹配的前面的子串
    rightContent$'上次匹配的后面的子串

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

实例:

var str = "this has been a short,short summer";

var patt = /(s)hort/g

console.log(str.match(patt));

console.log(RegExp.input);

console.log(RegExp.lastMatch);

console.log(RegExp.lastParen);

console.log(RegExp.leftContext);

console.log(RegExp.rightContext);

当然也可以使用那些短名的

结果:

["short", "short"]
this has been a short,short summer
short
s
this has been a short,
summer
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值