zoukankan      html  css  js  c++  java
  • 正则表达式语法总结

    全手打原创,转载请标明出处:https://www.cnblogs.com/dreamsqin/p/10881659.html,多谢~=。=

    (1)直接量字符

    字符

    匹配

    字母和数字字符

    自身

    o

    NUL字符

    制表符

    换行符

    v

    垂直制表符

    f

    换页符

    回车符

    xnn

    由十六进制数nn指定的拉丁字符,x0A=

    uxxxx

    由十六进制数xxxx指定的Unicode字符,u0009=

    cX

    控制字符^X,cJ=

     

    (2)字符类

    字符

    匹配

    […]

    方括号内的任意字符

    [^…]

    不在方括号内的任意字符

    .

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

    w

    任何ASCII字符组成的单词

    [a-zA-Z0-9_]

    W

    任何不是ASCII字符组成的单词

    [^a-zA-Z0-9_]

    s

    任何Unicode空白符

    S

    任何非Unicode空白符的字符

    d

    任何ASCII数字,[0-9]

    D

    除了ASCII数字之外的任何字符

    [^0-9]

    []

    退格直接量

     

    (3)重复字符(贪婪匹配)

    字符

    含义

    {n,m}

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

    {n,}

    匹配前一项至少n次或者更多次

    {n}

    匹配前一项n次

    ?

    匹配前一项0次或者1次(可选项)

    {0,1}

    +

    匹配前一项1次或者多次

    {1,}

    *

    匹配前一项0次或者多次(不限次)

    {0,}

    非贪婪匹配:尽可能少的匹配

    ??、+?、*?、{n,m}? 

    (4)选择、分组、引用字符

    字符

    含义

    |

    选择,匹配左右子表达式(从左往右,若左边匹配则忽略右边)

    (…)

    组合

    (?:…)

    只组合

    和第n分组第一次匹配的字符相匹配

     

    (5)锚字符

    字符

    含义

    ^

    匹配字符串的开头

    $

    匹配字符串的结尾

    

    匹配一个单词的边界

    Eg:hi

    B

    匹配非单词边界的位置

    (?=p)

    正向先行断言,要求接下来的字符都与p匹配,但不包括p那些字符

    (?!p)

    负向先行断言,要求接下来的字符不与p匹配

     

    (6)修饰符

    字符

    含义

    i

    执行不区分大小写的匹配

    g

    执行全局匹配,找到所有匹配

    m

    多行匹配模式

    Eg:/java$/im → “java”或者“Java is fun”

     

    (7)String对象

    方法

    示例

    返回

    特殊

    search()

    “JavaScript”.search(/script/i)

    返回4

    第一个与之匹配的子串的起始位置,找不到则返回-1

    不支持全局检索,忽略修饰符g

    replace()

    text.replace(/javascript/gi,“JavaScript”)

    text.replace(/“([^”]*)”/, ‘“$1”’)

    替换后的字符串

    $数字

    参数若非正则表达式,则直接搜索

    match()

    “1 plus 2 equals 3”.match(/d+/g)

    返回[“1”, “2”, “3”]

    由匹配结果组成的数组,未匹配则返回null

    非全局搜索时,a[0]存放完整匹配,a[1]存放a[0]与第一个括号括起来表达式相匹配的子串,所以a[n]存放的是$n的内容

    split()

    “123,456,789”.split(“,”)

    返回[“123”, “456”, “789”]

    “1,  2,  3,  4,  5”.split(/s*,s*/)

    返回[“1”, “2” ,“3”, “4”, “5”]

    拆分后的子串数组

    参数是正则表达式时,可以指定分隔符,允许留白

     

    (8)RegExp对象

    方法

    示例

    返回

    特殊

    regExp()

    var zipcode=new RegExp(“\d{5}”, “g”)

    RegExp对象

    第一个参数正则表达式主体部分(两斜线之间)

    第二个参数可选,修饰符

    “”转义字符前缀

    exec()

    var pattern=/Java/g;

    var text=”JavaScript is more fun than Java!”;

    var result=pattern.exec(text);

    同match。

    数组.index:发生匹配的字符位置

    数组.input:引用正在检索的字符串

    数组第一个元素为与正则表达式匹配的字符串,余下的是与圆括号内的子表达式匹配的字符串。

    同一个正则表达式第二次调用exec()时,将从lastIndex出开始检索。

    test()

    var pattern=/java/I;

    pattern.test(“JavaScript”);

    只要存在匹配就返回true,否则返回false

    也可使用lastIndex属性

     

    属性

    含义

    类型

    source

    正则表达式的文本

    只读字符串

    global

    是否带有修饰符g

    只读布尔值

    ignoreCase

    是否带有修饰符i

    只读布尔值

    multiline

    是否带有修饰符m

    只读布尔值

    lastIndex

    若有修饰符g,该属性存储在整个字符串中下一次检索的开始位置

    可读/写整数(exec和text方法会用到)

  • 相关阅读:
    MATLAB01
    Diffie-Hellman 密钥交换
    古典密码
    正则表达式
    装饰器初析
    进制转换的栈实现
    Log4j(异常日志)
    2018/6/6
    2018.1.1T19B3-u4
    2018.1.1T19-B3-U3jiangyi
  • 原文地址:https://www.cnblogs.com/dreamsqin/p/10881659.html
Copyright © 2011-2022 走看看