Skip to content

关于正则

需要知道正则能干什么事, 效率如何

根本记不住这么多规则, 作者更倾向于用的时候去查

正则表达式

正则表达式是用于匹配字符串中字符组合的模式。

在 JavaScript 中,正则表达式也是对象。这些模式被用于 RegExpexectest 方法,以及 StringmatchmatchAllreplacesearchsplit 方法。

重要

  • 正则表达式是由一个字符序列形成的搜索模式。

    当你在文本中搜索数据时,你可以用搜索模式来描述你要查询的内容。

    正则表达式可以是一个简单的字符,或一个更复杂的模式。

    正则表达式可用于所有文本搜索和文本替换的操作。

  • 语法

    /正则表达式主体/修饰符(可选)
    
    //example
    var patt = /runoob/i

    /runoob/i 是一个正则表达式

    runoob是一个正则表达式主体(用于检索)

    i是一个修饰符(搜索不区分大小写)

创建一个正则表达式

两种方式

  • 使用一个正则表达式字面量,其由包含在斜杠之间的模式组成,如下所示
    js
    var re = /ab+c/;
    脚本加载后,正则表达式字面量就会被编译。当正则表达式保持不变时,使用此方法可获得更好的性能。
  • 或者调用RegExp对象的构造函数,如下所示
    js
    var re = new RegExp("ab+c");
    在脚本运行过程中,用构造函数创建的正则表达式会被编译。如果正则表达式将会改变,或者它将会从用户输入等来源中动态地产生,就需要使用构造函数来创建正则表达式。

编写一个正则表达式的模式

一个正则表达式模式是由简单的字符所构成的,比如 /abc/;或者是简单和特殊字符的组合,比如 /ab*c//Chapter (\d+)\.\d*/。最后的例子中用到了括号,它在正则表达式中常用作记忆设备。即这部分所匹配的字符将会被记住以备后续使用,例如使用括号的子字符串匹配。

使用简单模式

简单模式是由你想直接找到的字符构成。比如,/abc/ 这个模式就能且仅能匹配 "abc" 字符按照顺序同时出现的情况。例如在 "Hi, do you know your abc's?" 和 "The latest airplane designs evolved from slabcraft." 中会匹配成功。在上述两个例子中,匹配的子字符串是 "abc"。但是在 "Grab crab" 中会匹配失败,因为它虽然包含子字符串 "ab c",但并不是准确的 "abc"。

使用特殊字符

当你需要匹配一个不确定的字符串时,比如寻找一个或多个 "b",或者寻找空格,可以在模式中使用特殊字符。比如,你可以使用 /ab*c/ 去匹配一个单独的 "a" 后面跟了零个或者多个 "b",同时后面跟着 "c" 的字符串:*的意思是前一项出现零次或者多次。在字符串 "cbbabbbbcdebc" 中,这个模式匹配了子字符串 "abbbbc"。

正则表达式中的特殊字符