• js正则表达式(一)


    下面是我在JavaScript权威指南第六版中的主要部分摘抄,以便于自己日后的翻阅:

    JavaScript中的正则表达式用RegExp对象表示,可以用两种方式创建RegExp对象

    一种是通过一种特殊的直接量语法来创建,例如:

    var pattern=/s$/;       //匹配所有以字母"s"结尾的字符串

    运行这段代码创建一个新的RegExp对象,并将它赋值给变量 。

    另一种是用构造函数RegExp()创建RegExp对象。例如:

    var pattern=new RegExp("s$");

    以下是JavaScript正则表达式中使用的几种字符:

    (一)

    正则表达式中的所有字母和数字都是按照字面含义进行匹配的。当然,也支持非字母的字符匹配,这些字符需要通过反斜线(\)作为前缀进行转义。

    以下是正则表达式中的直接量字符

    字符 匹配
    字母和数字字符 自身
    \o NUL字符(\u0000)
    \t 制表符(\u0009)
    \n 换行符(\u000A)
    \v 垂直制表符(\u00B)
    \f 换页符(\u000c)
    \r 回车符(\u000D)
    \xnn 由十六进制数nn指定的拉丁字符,例如,\x0A等价于\n
    \uxxx 由十六进制数xxx指定的Unicode字符,例如\u0009等价于\t
    \cX 控制字符^X,例如\cJ等价于换行符\n

    注:在正则表达式中按照直接量匹配反斜线本身,必须使用反斜线将其转义。比如,正则表达式/\\/“”匹配任何包含反斜线的字符串。

    (二)字符类

    将直接量字符单独放进方括号内就组成了字符类。一个字符类可以匹配它所包含的任意字符。

    以下是正则表达式中的字符类

    字符 匹配
    [...] 方括号内的任意字符
    [^...] 不在方括号内的任意字符
    . 除换行符和其他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]
    [\b] 退格直接量(特例)

    注:在方括号之内也可以写这些特殊转义字符。比如/[\s\d]/ 匹配任意空白符或者数字。

    (三)重复

    正则表达式中描述某元素“重复出现的次数”

    以下是正则表达式的重复字符语法

    字符 含义
    {n,m} 匹配前一项至少n次,但不能超过m次
    {n,} 匹配前一项n次或者更多次
    {n} 匹配前一项n次
    ? 匹配前一项0次或者1次,也就是说前一项是可选的,等价于{0,1}
    + 匹配前一项1次或者多次,等价于{1,}
    * 匹配前一项0次或者多次,等价于{0,}

    注:在使用“*”和“?”时,由于这些字符可能匹配0个字符,因此他们允许什么都不匹配。例如,/a*/与字符串"bbbb"匹配。

    这里有个非贪婪的重复,后续会有详细的说明。

    (四)选择、分组和引用

    正则表达式的选择、分组和引用 字符

    字符 含义
    | 选择,匹配的是该符号左边的子表达式或右边的子表达式
    (...) 组合,将几个项组合为一个单元,这个单元可通过“*”、“+”、“?”和“|”等符号加以修饰,而且可以记住和这个组合相匹配的字符串以供此后的引用使用
    (?:...) 只组合,把项组合到一个单元,但不记忆与该组相匹配的字符
    \n 和第n个分组第一次匹配的字符相匹配,组是圆括号中的子表达式(也有可能是嵌套的),组索引是从左到右的左括号数,“(?:”形式的分组不编码

    (五)指定匹配位置

    正则表达式的元素不匹配某个可见的字符,他指定匹配发生的合法位置。这些元素称为正则表达式的锚。

    以下是正则表达式中的锚字符

    字符 含义
    ^ 匹配字符串的开头,在多行检索中,匹配一行的开头
    $ 匹配字符串的结尾,在多行检索中,匹配一行的结尾
    \b

    匹配一个单词的边界,简言之,就是位于字符\w和\W之间的位置,或位于字符\w和字符串的开头

    或者结尾之间的位置

    \B 匹配非单词边界的位置
    (?=p) 零宽正向先行断言,要求接下来的字符都与p匹配,但不能包括匹配p的那些字符
    (?!p) 零宽负向先行断言,要求接下来的字符不与p匹配

     (六)修饰符

    正则表达式的修饰符 ,用以说明高级匹配模式的规则,修饰符放在/之外。

    以下是正则表达式修饰符

    字符 含义
    i 执行不区分大小写的匹配
    g 执行一个全局匹配,简言之,即找到所有的匹配,而不是在找到一个之后就结束了
    m 多行匹配模式,^匹配一行的开头和字符串的开头,$匹配行的结束和字符串的结束

    以上是JavaScript正则表达式中使用的各种字符和元字符总结。

  • 相关阅读:
    CentOS7.0 内核(3.10.0-123.el7.x86_64)bug导致KVM物理机重启
    Jenkins控制台输出乱码
    MySQL 主从失败报错:Last_SQL_Errno: 1594
    PHP7添加opcache.so模块
    python 网络爬虫requests模块
    Python 运算符
    tmux使用笔记
    linux使脚本在后台运行
    git 使用钩子直接推送到工作目录
    Git使用笔记
  • 原文地址:https://www.cnblogs.com/cjr001/p/7192048.html
Copyright © 2020-2023  润新知