zoukankan      html  css  js  c++  java
  • JavaScript 正则表达式的入门与使用

    知道正则表达式已经很久了,粗略会看懂一些,不过以前没有系统的学习,最近在看《JS权威指南》,刚好看到了看到正则表达式部分,就比较系统的学习了正则表达式。

    先说一下正则表达式的一些基本知识

    定义

    正则表达式直接量被定义在一对斜杠之间(/)

    直接量字符(前面7个感觉用的会比较多)

    字母或数字(自身)

    o(NULL字符)

    (换行符)

    (制表符)

    v(垂直制表符)

    f(换页符)

    (回车)

    xnn(16进制数nn指定的拉丁字符)

    uxxxx(16进制数xxxx指定的Unicode字符)

    cX(控制字符^X)

    字符类

    [...](位于括号内的任意字符)

    [^...](不位于括号内得任意字符)

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

    w([a-zA-Z0-9])

    W([^a-zA-Z0-9])

    s(任何Unicode空白符)

    S(任何非Unicode空白符,w和S不同

    d([0-9])

    D([^0-9])

    [](退格直接量)特例

    重复字符

    {n,m}(匹配前一项至少n次至多m次)

    {n,}(匹配前一项至少n次或更多次)

    {n}(匹配前一项恰好n次)

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

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

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

    非贪婪重复

    如/a+/匹配1个或多个a,/a+?/只匹配一个a(前者为贪婪的,后者为非贪婪的)

    选择、分组、引用

    |(选择符,/a|b/可以匹配a或者b)

    (...)(组合,定义子模式,1表示第一个带括号的子表达式,嵌套的时候按左括号分/(['"])[^1]*1/当第一个为单引号就1为单引号,其他同理)

    (?:...)(只组合,不能用1引用,即不记忆与该数组匹配的字符)

    (与第n个分组第一次匹配的字符相匹配)

    锚字符

    ^(匹配字符串开头,多行检索时匹配一行的开头)

    $(匹配字符串结尾,多行检索时匹配一行的结尾)

    (匹配一个词语的边界)

    B(匹配非词语边界)

    (?=p)(正前向声明,要求接下来的字符都与模式p匹配)

    (?!p)(反前向声明,要求接下来打得字符不与模式p匹配)

    标记(在/符号外说明)

    i(执行大小写不敏感匹配)

    g(执行全局匹配,即找到所有匹配)

    m(多行匹配)

    用于匹配模式的String方法

    seach(regExp)

    该方法有一个参数,这个参数为正则表达式,如果不是正则表达式,也会用RegExp构造函数装换为正则表达式。seach()不支持全局检索,所以忽略标志g

    replace(regExp,String)

    该方法第一个参数为正则表达式,第二个参数为要替换的字符串。当有标志g时第二个参数会替换全部与正则表达式匹配的子串,如果没有标志g,则替换第一个与模式匹配的子串。如果第一个参数为字符串,则直接检索该字符串。

    $n表示第n个子串。String=<aaa><bbb>;var x=String.replace(regExp,"<$1><$1>");则x的值为<aaa><aaa>。

    match(regExp)

    当有标志g时,该方法返回了包含匹配结果的数组。当没有标志g时,也是返回一个数组,array[1]则为第一个子串。

    split(x)

    把调用的字符串分解为一个子串数组,分隔符是参数,参数也可以使用正则表达式,如/*,ss*/,逗号左右有一个或多个空格

    RegExp对象

    构造函数RegExp(String,gim),第一个参数为正则表达式主体的字符串,注意转义字符的使用,第二个参数是正则表达式的标志,可省略。

    RegExp对象方法

    regExp.exec(String);

    该方法与match()方法很类似,但是,不管加不加标志g,没有找到匹配则返回null,如果找到,该方法只返回第一个匹配的字符串。如果有加标志g,第二次调用exec时则从regExp.lastIndex所指示的字符位置开始检索,利用这个特点遍历所有匹配,则可以达到match()加标志g的结果,不过结果不像match()一样返回一个数组。

    regExp.test(String),如果字符串包含正则表达式的一个匹配,则返回ture,当一个全局方法调用test()时,同样regExp.lastIndex设置为匹配之后的字符的位置,这样,test()方法也可以遍历。

    RegExp实例属性(5个)

    source 只读 正则表达式文本

    global 只读的布尔值 说明是否有标志g

    ignoreCase 只读的布尔值 说明是否有标志i

    multiline 只读的布尔值 说明是否有标志m

    lastIndex 可读写的整数

  • 相关阅读:
    python实现双向链表
    django contenttypes
    tensorflow学习笔记一
    vue指令和事件绑定
    es6简单介绍
    mysql主从复制
    mysql事务
    winform 使用 ReportViewer做报表
    设置控件获取焦点
    修改安卓串口蓝牙app问题记录
  • 原文地址:https://www.cnblogs.com/xxxxBW/p/4428611.html
Copyright © 2011-2022 走看看