• 正则


    (一)字符类

    [...]  方括号内的任意字符

    [^...]   不在方括号内的任意字符

    .       除换行符和其它Unicode行终止符之外的任意字符

    w    任何ASCII字符组成的单词,等价于[a-zA-Z0-9]

    W   任何非ASCII字符组成的单词,等价于[^a-zA-Z0-9]

    s     任何Unicode空白符

    S     任何非Unicode空白符

    d     任何数字,等价于[0-9]

    D     任何非数字,等价于[^0-9]

    (二)重复字符语法

    {n,m}  匹配前一项至少n次,但不能超过m次

    {n,}     匹配前一项n次或更多次

    {n}      匹配前一项n次

    ?     匹配前一项0次或1次,等价{0,1}

    +    匹配前一项1次或多次,等价于{1,}

    *     匹配前一项0次或多次,等价于{0,}

    默认贪婪匹配:/a{1,3}/    匹配'aaa'

    非贪婪匹配,只需要在重复字符后面加上?  /a{1,3}?/    匹配'a'

    (三)选择,分组,引用

    |       选择,匹配该符号左边的子表达式或右边的子表达式:  /d{3}|[a-z]{4}/  匹配三位数字或者四个小写字母

    ()   分组

    1. 可以把单独的项组合成子表达式,以便可以像处理一个单独的单元那样用 | * + ?等对单元内的项进行处理: /java(script)?/

    2. 分组之后可以引用 表示引用第n个分组表达式匹配内容: /(['"])[^'"]*1/

    (四)指定匹配位置

    ^  匹配字符串开头

    $  匹配字符串结尾

       匹配单词边界

    (五)修饰符

    i  不区分大小写

    g  全局匹配,即找到所有匹配,而不是找到第一个之后就停止

    (六)String正则匹配方法

    search: 参数是正则,返回一个与之匹配的字串的起始位置,匹配不到返回-1

    'javascript'.search(/script/i)   返回4  

    replace: 第一个参数是正则,第二个是要替换的字符串、$开头的特殊字符串、函数

    'javascript'.replace(/script/gi,'Script')  返回javaScript

    第二个参数可以是$n,代表第n个组合所匹配的字符串

    'javascript'.replace(/(sc)ript/gi,"$1") 返回javasc

    第二个参数可以是函数

    'a=1&b=2'.replace(/(w+)=(w+)&?/g,function($1,$2,$3){
        console.log($1,$2,$3)
    }) 
    a=1& a 1
    b=2 b 2

    match:参数是正则,返回一个由匹配结果组成的数组

    带g:'1 ldf 3 dsfdf 4f'.match(/d+/g)  返回['1','3','4']

    不带g:

    '1 ldf 3 dsfdf 4f'.match(/d+/)  返回["1", index: 0, input: "1 ldf 3 dsfdf 4f"]

    'abcd'.match(/(ab)c/)  返回["abc", "ab", index: 0, input: "abcd"]   还会把组合匹配到的字符放到数组中

    (七)正则方法

    test:参数为字符串,判断是否匹配成功

    /java/.test('javascript')  返回true

    exec:如果 exec() 找到了匹配的文本,则返回一个结果数组。否则,返回 null。此数组的第 0 个元素是与正则表达式相匹配的文本,第 1 个元素是与 RegExpObject 的第 1 个子表达式相匹配的文本(如果有的话),第 2 个元素是与 RegExpObject 的第 2 个子表达式相匹配的文本(如果有的话),以此类推。除了数组元素和 length 属性之外,exec() 方法还返回两个属性。index 属性声明的是匹配文本的第一个字符的位置。input 属性则存放的是被检索的字符串 string。我们可以看得出,在调用非全局的 RegExp 对象的 exec() 方法时,返回的数组与调用方法 String.match() 返回的数组是相同的。

    /java/.exec('javascript')  返回["java", index: 0, input: "javascript"]

    但是,当 RegExpObject 是一个全局正则表达式时,exec() 的行为就稍微复杂一些。它会在 RegExpObject 的 lastIndex 属性指定的字符处开始检索字符串 string。当 exec() 找到了与表达式相匹配的文本时,在匹配后,它将把 RegExpObject 的 lastIndex 属性设置为匹配文本的最后一个字符的下一个位置。这就是说,您可以通过反复调用 exec() 方法来遍历字符串中的所有匹配文本。当 exec() 再也找不到匹配的文本时,它将返回 null,并把 lastIndex 属性重置为 0。

    var p = /java/g
    var str = 'javajavajaddd'
    p.exec(str)
    ["java", index: 0, input: "javajavajaddd"]
    p.exec(str)
    ["java", index: 4, input: "javajavajaddd"]
  • 相关阅读:
    详解Winform多线程编程基本原理
    asp.net 文件夹和文件的创建、删除
    sql server 查询表名,存储过程,列名等
    随机输出数组中的一个数
    C# 获取Access数据库中所有表名及其列名、列类型
    Oracle 数据库小记
    Oracle11g、PLSQL、Winfrom环境搭建
    SELECT INTO 和 INSERT INTO SELECT 两种表复制语句
    Android开发中用到的框架、库介绍
    Android数据存储
  • 原文地址:https://www.cnblogs.com/webLilingyun/p/7220041.html
Copyright © 2020-2023  润新知