美文网首页饥人谷技术博客
JavaScript正则表达式基础

JavaScript正则表达式基础

作者: _茂 | 来源:发表于2019-04-04 19:12 被阅读39次

    一、简介

    正则表达式是 使用单个字符串来描述、匹配一系列符合某个句法规则的字符串。
    在JavaScript中,正则可以有两种初始化的方式

    二、术语

    1.元字符

    元字符就是指那些在正则表达式中具有特殊意义的专用字符。正则表达式语言由两种基本字符类型组成:原义(正常)文本字符和元字符。

    比如\ ^ $ * + ? 等等,只要是有特殊含义的,就都是元字符

    2.量词

    正则里表示数量的词

    比如{n} {n,} {n,m}(这里的n和m是非负整数)

    3.分组和引用

    有时,我们需要对某一块的正则分组,以便将来引用它,如:

    /(ab)c(de)\1/这里的ab就是一个分组, de也是一个分组。\1是对第1个分组(也就是ab这个分组)的引用,引用使我们不需要重复写正则片段

    4.转义

    \ 就是一个转义字符,它表示将下一个字符标记为一个特殊字符

    比如:

    \s 能匹配任何空白字符,s本身是一个正常文本(不是元字符),但是因为前面的\是转义字符,\s就被赋予了新的含义

    \d 能匹配一个数字字符,d本身是一个正常文本(不是元字符),但是因为前面的\是转义字符,\d也就被赋予了新的含义

    5.零宽断言

    有时我们需要捕获的内容前后必须是特定内容,但是又不希望这些特定内容出现在捕获里,就要用到零宽断言
    比如:

    (?=pattern)正向肯定预查,在任何匹配pattern的字符串开始处匹配查找字符串。

    (?!pattern)正向否定预查,在任何不匹配pattern的字符串开始处匹配查找字符串。

    这些特定内容不会出现在捕获里

    6.贪婪 & 惰性

    贪婪:它会根据前导字符去匹配尽可能多的内容。
    惰性(非贪婪):匹配尽可能少的内容。

    如果?紧跟在任何一个其他限制符 *, +, ?, {n}, {n,}, {n,m} 后面时,匹配模式是非贪婪的。非贪婪模式尽可能少的匹配所搜索的字符串。

    默认是贪婪模式,也就是说,会尽可能多的匹配搜索的字符串
    比如:

    对于字符串 oooo/a+?/将匹配单个 a,而/a+/将匹配所有 a

    其中/a+?/ 由于有一个?,是惰性模式(非贪婪),所以一旦匹配到了一个a,就停止;
    /a+/是默认到贪婪模式,所以会尽可能地匹配更多内容,所以会匹配所有的a

    (完)

    相关文章

      网友评论

        本文标题:JavaScript正则表达式基础

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