美文网首页
正则表达式

正则表达式

作者: amanohina | 来源:发表于2020-12-22 16:02 被阅读0次

什么是正则表达式?

  • 正则表达式通常被用来检索,替换那些符合某个模式(规则)的文本
  • 对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符,以及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑

正则表达式的作用

  1. 给定的字符串是否符合正则表达式的过滤逻辑(匹配)
  2. 可以通过正则表达式,从字符串中获取我们想要的特定部分(提取)
  3. 强大的字符串替换能力(替换)

正则表达式在线测试网站

https://c.runoob.com/front-end/854

创建正则的方法

  • 在 JavaScript 中,正则表达式也是对象,是一种索引类型。
  • 使用一个正则表达式字面量是最简单的方式。两个 / 是正则表达式的定界符。
  • 你可以通过下面两种方法创建一个正则表达式:
  • 使用一个正则表达式字面量,如下所示:
var reg = /abc/; 

正则表达式字面量在脚本加载后编译。若你的正则表达式是常量,使用这种方式可以获得更好的性能。

  • 调用 RegExp 对象的构造函数,如下所示:
var re = new RegExp("abc");
<script>
    // 创建正则的第一种方法,正则的字面量 /
    var reg = /abc/;
    // 第二种,通过 构造函数 创建
    var reg1 = new RegExp("cde");
    console.log(reg1);
    console.log(reg);
  </script>

学习工作中建议使用字面量的方式去创建正则表达式,方便快捷

相关正则方法

  • 字符串方法


    字符串的方法
  • 正则表达式方法


    正则表达式方法

split方法

  • 根据匹配字符串切割父字符串
    比如:
    根据空格切割字符串"aa bbb c dd eeeeeee"
    'aa bbb c dd eeeeee'.split(/\s+/)
    => ["aa", "bbb", "c", "dd", "eeeeee"]
<script>
    // split方法:分割字符串,成为一个数组
    var str = "'aa bbb    c dd eeeeee";
    // 使用一个空格字符进行的精确分割
    // var arr = str.split(" ");
    // 使用正则表达式可以进行模糊匹配分割
    var arr1 = str.split(/\s+/);
    // console.log(arr);
    console.log(arr1);

思考题:根据字母a切割字符串"bbaacaaaadddaeeeeeaaf"

    var str2 = "bbaacaaaadddaeeeeeaaf";
    var arr2 = str2.split(/a+/);
    console.log(arr2);

search方法

  • 寻找匹配字符串在父子符串中的位置
    比如:
    在"abcdefg"中寻找"cd"的位置
    "abcdefg".search(/cd/)
    = > 2
 // search方法:寻找匹配子字符串在父子符串的位置
    var str = "abcdefg";
    console.log(str.search("cd"));
    console.log(str.search(/ef/));

找不到对应的字符段就会返回-1,找到了就返回大于等于0的数字,对应所在位置
思考题:在字符串'aaaa o o bbb aaa'中寻找‘o o’位置

var str1 = "aaaa o o bbb aaa";
    console.log(str1.search(/o o/));

答案为5,第5位。

match方法

  • 在父子符串中寻找匹配字符串
    比如:
    在"abbcccbbbbbddbbbdabbb"中查询重复'b'字符串
    'abbcccbbbbbddbbbdabbb'.match(/b+/g)
    = >["bb","bbbbb","bbb","bbb"]
// match方法:在字符串中寻找匹配字符串
    var str = "abbcccbbbbbddbbbdabbb";
    // var arr = str.match(/b+/); //在匹配到第一个之后就结束
    var arr = str.match(/b+/g); // 如果有全局修饰符g,会在找到所有匹配的字符串之后结束
    console.log(arr);

思考题:'aaaa o o bbb o o aaa'找寻所有‘o o’字符串

    var str1 = "aaaa o o bbb o o aaa";
    var arr1 = str1.match(/o\s+o/g); //空格用\s表示,+号表示一个或者多个
    console.log(arr1);

replace方法

    var str = "aa b c d e f ";
    var str1 = str.replace(/\s/g,"");//将空格在全局下全部找到替换成不带空格的
    console.log(str1);

正则方法exec

  • 在字符串中寻找匹配字符串,该方法比其他正则方法或字符串方法支持的更复杂
    比如:
    在'aaaabccccbacabc'中查找'abc'字符串
    var result = /abc/.exec('aaaabccccbacabc')
    result => ["abc"]
    result.index => 3
 // exec 方法:查找匹配的字符串,输出到数组中
    // 不论有没有全局修饰符,都只会在找到第一个之后停止
    var str = "aaaabccccbacabc";
    var reg = /abc/;
    var arr = reg.exec(str);
    console.log(arr);
    console.log(arr.index);

思考题:在'ooooo 0 0 ooooooooooo'字符串中匹配["o 0 0 o"]

    var str = "ooooo 0 0 ooooooooooo";
    var reg = /o 0 0 o/;
    var arr = reg.exec(str);
    console.log(arr);
    console.log(arr.index);
结果

正则方法test

  • 检测字符串是否匹配正则表达式
    比如:判断'aaddccddabcddeeddfff'是否包含'abc'字符串
    /abc/.test('aaddccddabcddeeddfff')
    => true
    思考题:检测'a bc'和'abc'是否包含空格


正则表达式的组成

  • 由一些普通字符和一些特殊字符(又叫元字符metacharacters)组成。普通字符包括大小写的字母和数字,而元字符则具有特殊的含义

  • 特殊字符:javascript 中常用特殊字符有 ( ) [ ] { } \ ^ $ | ? * + .


    特殊字符的用途之一
  • 若想匹配这类字符必须用转义符号 \ 如:(,^,\



    测试换行符的小知识点

字符集

  • 使用[]表示的可能的字符的集合,集合内部可以排列多个匹配字符串的可能性,整个字符集需要匹配的是字符串中的一个字符
  • [] --> 字符串中的一个字符,多选一的效果,有一个满足就算匹配成功


    分类

简单类

  // 简单类:多个可能匹配的字符连续书写在一起,只要其中一个匹配成功即可
        var reg = /[abc]/;
        console.log(reg.test("eeec"));

结果:true

范围类

 // 范围类:将匹配同一类型且连续在一起的字符写到集合中,中间使用 - 连接
        var reg = /[0-9]/;
        // var reg = /[a-z]/;
        // var reg = /[A-Q]/;
        console.log(reg.test("A123456"));

结果:true

负向类

// 负向类:取反的意思,不包含字符集内部书写的字符
        var reg = /[^A-Q]/;
        console.log(reg.test("A"));

结果:false

组合类

// 组合类:单一类型或者简单类不能匹配所有结果,可以将多个写法连在一起书写
        var reg = /[0-9a-z]/;
        // var reg = /[0-9A-Z]/;
        // 特殊的:如果数字、大写字母、小写字母,按照这种顺序写的完整的范围,可以缩写
        var reg1 = /[0-z]/;
        console.log(reg.test("a8"));

修饰符

g和i

边界

预定义类

量词

分组

或操作符

  • 用竖线(|)字符表示或者的关系
    /a|bcd/ 匹配a或者bcd字符
    /(ab)+|(cd)+/ 匹配出现一次或者多次的ab或者cd

分组的反向引用

  • 反向引用标识是对正则表达式中的匹配组捕获的子字符串进行编号,通过“\编号(在表达式中)”,“$编号(在表达式外)”进行引用。从1开始计数
 // 正则中通过分组匹配到的字符串,会被进行编号,从 1 开始
        // 在正则内部可以通过 \1 方式,去对字符串进行反向引用
        console.log(/^([a-z]{3})\1$/.test("byebye"));
        console.log(/^([a-z]{3})\1$/.test("byelie"));

结果:true,false



匹配中文字符集

  • 匹配中文:[\u4e00-\u9fa5]
// 匹配中文字符
        var reg = /^[a-z\u4e00-\u9fa5]+$/;
        console.log(reg.test("只有中文的文字内容"));
        console.log(reg.test("只有中文的文 字内容"));
        console.log(reg.test("只有中文的文a字内容"));

true
false
true

相关文章

  • Linux命令行与Shell脚本编程大全-shell正则表达式

    本章内容: 定义正则表达式 了解基本正则表达式 扩展正则表达式 创建正则表达式 定义正则表达式 正则表达式是你定义...

  • 正则相关

    正则表达式基本语法 正则表达式常见字符 正则表达式特殊字符 正则表达式数量词 正则表达式边界匹配 正则表达式逻辑或...

  • 正则表达式系列-1

    正则表达式系列-1正则表达式系列-2正则表达式系列-3正则表达式系列-4 什么是正则表达式 正则表达式就是用事先定...

  • 正则表达式

    正则表达式 - 教程正则表达式 - 简介正则表达式 - 语法正则表达式 - 元字符正则表达式 - 运算符优先级正则...

  • Python基础入门 - 正则表达式与综合实战

    1. 初识正则表达式 1.1 介绍 步骤介绍正则表达式入门及应用正则表达式的进阶正则表达式案例 1.2 正则表达式...

  • Java正则表达式参考

    Java正则表达式入门 java正则表达式应用 深入浅出之正则表达式(一) 深入浅出之正则表达式(二) 正则表达式...

  • 正则表达式

    正则表达式 正则表达式就是记录文本规则的代码 正则表达式常用的元字符 正则表达式常用的限定符 正则表达式举例:这里...

  • Python爬虫(十)_正则表达式

    本篇将介绍python正则表达式,更多内容请参考:【python正则表达式】 什么是正则表达式 正则表达式,又称规...

  • python正则表达式

    本篇将介绍python正则表达式,更多内容请参考:【python正则表达式】 什么是正则表达式 正则表达式,又称规...

  • 正则表达式

    了解正则表达式基本语法 能够使用JavaScript的正则对象 正则表达式简介 什么是正则表达式 正则表达式:用于...

网友评论

      本文标题:正则表达式

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