Javascript 正则表达式内容总结

今天学习了Javascript 中的正则表达式相关内容,为了自己更好的记住,总结如下:
实例化RegExp对象:

  • 直接量 eg: var reg=/\bis\b/ 匹配单词 is
  • 构造函数 eg: var reg=new RegExp('\\bis\\b','g') 匹配全文中的单词 is

修饰符:

  • g:global 表示全文搜索,如果不添加g修饰符,则匹配到一个子字符串就停止。
  • i:ignore case 表示忽略大小写,不添加的情况下对大小写敏感。
  • m:multiple lines 表示多行搜索,在有换行符的情况下,每一行都当做开头。
    此外,这几个也是JS对象属性,默认值都为false。除了这三个属性,JS对象还有如下两个属性:
  • lastIndex:当前表达式匹配内容的最后一个字符的下一个位置;当不是全局匹配的时候对该属性没有影响。
  • source:正则表达式的文本字符串。

元字符:
指的是有特殊含义的非字母的字符,如下所示:
这里写图片描述
除此之外还有: + ? $ ^ | \ ( ) { } [ ]等,下面一一介绍一下。

  • 元字符[ ]用来构建类,并且在[ ]组成的类中是可以连写的:如
    [a-zA-Z] 用来匹配小写和大写字母。有许多预定义类,如下表格所示:
    这里写图片描述

  • 元字符{ }加数字一般用来表示量词,还有?+ *也是,如下:
    这里写图片描述
    使用量词时可能涉及到贪婪模式与非贪婪模式。
    贪婪模式:尽可能多的匹配,默认为贪婪模式;
    非贪婪模式:尽可能少的匹配,通过在量词后面加?来实现。

    var a="12345678";
    var reg=/\d{3,6}/;
    a.replace(reg,"X")
    
     	结果为:"X78"
    
    var a="12345678";
    var reg1=/\d{3,6}?/;
    a.replace(reg1,"X")
    
     	结果为:"X45678"
    
  • 元字符( )用来达到分组的效果,可以使量词作用于分组。分组的内容可以用$1、$2等来获取。如果不希望分组的内容用$获取到,可以在分组内加上?:就行了。

    var reg=/\d{2}(\w)\d/;
    var x="112t3er45";
    x.replace(reg,"$1")
    
     	结果为:"1ter45"
    
    var reg=/\d{2}(?:\w)\d/
    var x="112t3er45";
    x.replace(reg,"$1")
    
     	结果为:"1$1er45"
    
  • 元字符 | 表示或的含义;

  • 元字符$和^:可以用做边界字符:
    这里写图片描述
    注意:^在[ ]内部的时候是表示反向,如[^a-z] 不包括字母a到z;

正则表达式还有两个常用的方法:

  • test():匹配成功为true,不成功为false。
  • exec():返回一个结果数组。
    属性index:声明匹配文本的第一个字符的位置;
    在非全局调用下,返回的结果数组中:第一个位置是返回的匹配文本;第二个位置是匹配的第一个子表达式文本,即第一个分组的匹配文本;同样依次第三个位置是第二个分组的内容……

字符串对象关于正则表达式也有一些方法:

  • search(reg):返回第一个匹配结果的index,不支持全局匹配,会忽略g修饰符。
  • match(reg):找到一个或多个匹配文本,以数组形式返回。在非全局调用下的返回值与exec返回值是一样的。在全局调用下只以数组的形式返回匹配的多个文本内容,不包含分组内容以及index属性等内容。
  • split(reg):分割字符串,返回数组
  • replace(reg,replaceStr) 替换字符串

前瞻:分为正向前瞻(符合断言)和负向前瞻(不符合断言)。在Javascript中不支持后顾,所以这里不再讨论。文本尾部为前,在正则表达式匹配到规则时,向前检查是否符合断言。 匹配的内容中不包括断言部分。
(?=)正向前瞻 (?!)负向前瞻

var reg=/\d\w(?=\d)/;
var x="23w4e";
x.replace(reg,"X");
	结果为:"2X4e"
var reg=/\d\w(?!\d)/;
var x="23we";
x.replace(reg,"X");
	结果为:"Xwe"

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值