美文网首页
RegExp记录

RegExp记录

作者: HupuJRs001 | 来源:发表于2021-06-29 14:10 被阅读0次
    断言 :表示一个匹配在某些条件下发生。断言包含先行断言、后行断言和条件表达式。
    字符类 :区分不同类型的字符,例如区分字母和数字。
    组和范围:表示表达式字符的分组和范围。
    量词 :表示匹配的字符或表达式的数量。
    UniCode转义 :基于 unicode 字符属性区分字符。例如大写和小写字母、数学符号和标点。
    ? 非贪婪 、贪婪模式 ;

    如果?紧跟在任何量词 *、 +、? 或 {} 的后面,将会使量词变为非贪婪(匹配尽量少的字符),和缺省使用的贪婪模式(匹配尽可能多的字符)正好相反。例如,对 "123abc" 使用 /\d+/ 将会匹配 "123"(贪婪模式),而使用 /\d+?/ 则只会匹配到 "1" (非贪婪模式)。

    (x)

    括号,它在正则表达式中常用作记忆设备。即这部分所匹配的字符将会被记住以备后续使用
    其中括号被称为捕获括号。
    模式 /(foo) (bar) \1 \2/ 中的 '(foo)' 和 '(bar)' 匹配并记住字符串 "foo bar foo bar" 中前两个单词。模式中的 \1\2 表示第一个和第二个被捕获括号匹配的子字符串,即 foobar,匹配了原字符串中的后两个单词。注意 \1\2、...、\n 是用在正则表达式的匹配环节,详情可以参阅后文的 \n 条目。而在正则表达式的替换环节,则要使用像 $1$2、...、$n 这样的语法,例如,'bar foo'.replace(/(...) (...)/, '$2 $1')$& 表示整个用于匹配的原字符串。

    image.png
    交换字符串位置 demo
    image.png
    x(?=y) 匹配'x'仅仅当'x'后面跟着'y'.这种叫做先行断言

    例如,/Jack(?=Sprat)/会匹配到'Jack'仅当它后面跟着'Sprat'。/Jack(?=Sprat|Frost)/匹配‘Jack’仅当它后面跟着'Sprat'或者是‘Frost’。但是‘Sprat’和‘Frost’都不是匹配结果的一部分。

    (?<=y)x 匹配'x'仅当'x'前面是'y'.这种叫做后行断言。

    例如,/(?<=Jack)Sprat/会匹配到' Sprat '仅仅当它前面是' Jack '。/(?<=Jack|Tom)Sprat/匹配‘ Sprat ’仅仅当它前面是'Jack'或者是‘Tom’。但是‘Jack’和‘Tom’都不是匹配结果的一部分。

    x(?!y) 仅仅当'x'后面不跟着'y'时匹配'x',这被称为正向否定查找。

    例如,仅仅当这个数字后面没有跟小数点的时候,/\d+(?!.)/ 匹配一个数字。正则表达式/\d+(?!.)/.exec("3.141")匹配‘141’而不是‘3.141’

    (?<!y)x 仅仅当'x'前面不是'y'时匹配'x',这被称为反向否定查找。

    例如, 仅仅当这个数字前面没有负号的时候,/(?<!-)\d+/ 匹配一个数字。
    /(?<!-)\d+/.exec('3') 匹配到 "3".
    /(?<!-)\d+/.exec('-3') 因为这个数字前有负号,所以没有匹配到。

    相关文章

      网友评论

          本文标题:RegExp记录

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