美文网首页
js - 正则表达式基础内容

js - 正则表达式基础内容

作者: 蘑菇酱960903 | 来源:发表于2017-12-01 10:12 被阅读0次

    工具:Regexper

    实例化RegExp:

    • 字面量 /\bis\b/g
    • 构造函数 var reg = new RegExp('\\bis\\b', 'g'); (需要转义斜线)

    修饰符

    • g:global 全文搜索,不添加则搜索到第一个匹配停止
    • i:ignoreCase 忽略大小写
    • m:multiplelines 多行搜索,以换行符也当成新的一行进行搜索匹配

    特殊字符

    元字符 含义
    \t 水平制表符
    \v 垂直制表符
    \n 换行符
    \r 回车符
    \0 空字符
    \f 换页符
    \cX 与X对应的控制字符(ctrl+X)
    \b 单词边界
    \B 非单词边界
    . 任意字符
    * 0或1或多次,任意次
    + 至少1次
    0或者1次
    {n} 出现n次以上
    {n,m} 出现n-m次
    {n,} 至少出现n次
    {0,n} 最多n次
    ^ 用着类中表示取反,用在字符串中表示正则的开始
    $ 表示正则的结束
    类别 表达 例子
    字符类 []泛指一个类 [abc]匹配abc中任意一个
    范围类 [a-z0-9A-Z]匹配[]中的字符
    预定义类 \d:[0-9]数字字符;
    预定义类 \D:[^0-9] 非数字字符;
    预定义类 \s:空白符;
    预定义类 \S:非空白符;
    预定义类 \w:[a-zA-Z_0-9]单词字符(字母,数字,下划线);
    预定义类 \W:[^a-zA-Z_0-9]非单词字符

    贪婪模式

    正则中默认为贪婪模式

    '12345678'.replace(/\d{3,6}/g, 'X')  //X78 每6个为一个匹配
    

    非贪婪模式

    '12345678'.replace(/\d{3,6}?/g, 'X')  //XX78 每3个为一个匹配
    

    分组

    使用()能达到分组功能,使量词作用于分组,而不是挨着的字符

    • $符:配合分组,$1表示第一个捕获分组,$2表示第二个捕获分组……
    • 忽略分组:不希望捕获某些分组,只需要在分组内加上 ?:
    
    

    使用 | 能达到或功能

    'abdefcba'.replace(/ab(c|d)ef/g,'X')  //Xcba abcefg或者abdefg都可以匹配
    

    前瞻

    正则表达式从文本头部向尾部开始解析,所以在文本尾部方向表示“前”

    • 正向前瞻 exp(?=assert)
    • 负向前瞻 exp(?!assert)
    'a1b2c*b#'.replace(/\w(?=\d)/g,'X') //X1X2c*b# 前瞻为数字的匹配
    'a1b2c*b#'.replace(/\w(?!\d)/g,'X') //aXbXX*X# 前瞻不为数字匹配
    

    相关属性和方法

    对象属性

    • global 是否全文搜索,只读
    • ignoreCase 是否忽略大小写,只读
    • multiline 是否多行搜索,只读
    • lastIndex 当前匹配结果的最后一个字符的下一个字符

    方法

    • RegExp.prototype.test(str)
      测试字符串参数中是否存在匹配正则表达式模式的字符串
    reg1 = /\w/;
    reg1.test('ab'); //true
    ---------------------------
    //特殊情况,在全局搜索下
    reg2 = /\w/g;
    reg2.test('ab') //true 第一次匹配a
    reg2.test('ab') //true 第二次匹配b
    reg2.test('ab') //false 第三次则无
    while(reg2.test('ab')){
          console.log(reg2.lastIndex); 
    }
    // 1
       2
       undefined
    //lastIndex 表示第一次匹配结束的最后一个字符的下一个字符的索引值
    
    • RegExp.prototype.match(str)
    • RegExp.prototype.exec(str)
      使用正则表达式模式对字符串执行搜索,并将更新全局RegExp对象的属性;如果没有匹配的文本则返回null,否则返回一个匹配的结果数组。
      - index 声明匹配文本的第一个字符的位置
      - input 存放被检索的字符串String

    end

    相关文章

      网友评论

          本文标题:js - 正则表达式基础内容

          本文链接:https://www.haomeiwen.com/subject/jdavbxtx.html