JS正则表达式

作者: 沐泠LHY | 来源:发表于2019-04-30 17:34 被阅读0次

    正则对象的创建

    语法

    构造函数方式:
    var patt=new RegExp(pattern[,modifiers])
    对象直接量方式:
    var patt=/pattern/modifiers

    注:

    当使用构造函数创造正则对象时,需要常规的字符转义规则(在前面加反斜杠 \)
    var re = /\w+/;
    var re = new RegExp("\\w+");

    正则表达式字符含义

    JS正则表达式常见用法实例详解

    一些补充:
    1."\"
    做为转意,即通常在""后面的字符不按原来意义解释,如/b/匹配字符"b",当b前面加了反斜杆后/\b/,转意为匹配一个单词的边界。
    -或-
    对正则表达式功能字符的还原,如"*"匹配它前面元字符0次或多次,/a*/将匹配a,aa,aaa,加了""后,/a\*/将只匹配"a*"。

    2.修饰符"g"
    表示使用全局匹配,使用string.match(reg)时是否全局匹配返回值会有区别。

    若为全局匹配,则返回一个包含所有满足条件子串的数组(未找到返回null)。
    若不是全局匹配,则返回一个数组,数组首个元素为string中第一个匹配的子串,后面的元素依次为子表达式的匹配内容,另外,这个数组对象还包含两个成员input(输入串即string)和index(string中匹配到的子串的位置)。

    例如:
    "12a34a56b".match(/(\\d+)a/)
    返回数组
    ['12a','12'], input='12a34a56b', index=0

    "12a34a56b".match(/(\\d+)a/g)
    返回数组['12a','34a']

    3.修饰符"m"
    表示使用多行匹配,它的作用是修改^和$在正则表达式中的作用,让它们分别表示行首和行尾。(在默认状态下,^和$表示字符串的开头和结尾)

    例如:
    "an\nbb".match(/an$/)匹配不到,返回null
    "an\nbb".match(/an$/m)则可以匹配

    正则表达式常用函数

    js正则表达式常用函数详解

    match

    string.match(reg)
    使用正则表达式模式对字符串执行查找,并将包含查找的结果作为数组返回 ,如果不能匹配返回null
    返回值注意项见上述修饰符"g"的用法

    exec

    reg.exec(string)
    作用与match类似,但是全局模式"g"下exec是通过改变reg的成员lastIndex的值来控制每次只匹配一次并且按顺序匹配。
    注意,上面链接里说的是错的
    自测如下:

    let pat=/a(bc)/ig
    let str="aBcAbc"
    log(pat.exec(str))//["aBc","Bc",index:0,input:"aBcAbc"]
    log(pat.lastIndex)//3
    log(pat.exec(str))//["Abc","bc",index:3,input:"aBcAbc"]
    log(pat.lastIndex)//6
    

    细心的话可以想到,exec匹配最好不要中途换str

    let pat=/abc/g
    pat.exec("abcabc")
    log(pat.lastIndex)//3
    pat.exec("bcabc")//不过这里如果用"aabcabc"就能匹配到了
    log(pat.lastIndex)//0
    

    当然想中途换str还是可以通过置位lastIndex完成的

    replace

    string.replace(reg, replaceText)

    search

    string.search(reg)
    返回string中与正则表达式查找内容匹配的第一个子字符串的位置,未找到返回-1

    test

    reg.test(string)
    返回一个布尔值,用于判断字符串中是否存在与正则表达式相匹配的结果

    相关文章

      网友评论

        本文标题:JS正则表达式

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