zoukankan      html  css  js  c++  java
  • JS的正则表达式

    RegExp 对象

    RegExp 对象表示正则表达式,它是对字符串执行模式匹配的强大工具。

     

    正则表达式的创建方式 

    1.文字格式,使用方法如下: 

    /pattern/flags  (即:/模式/标记) 

    2.RegExp构造函数,使用方法如下: 

    new RegExp("pattern"[,"flags"])  (即:new RegExp("模式"[,"标记"]))

     

    参数说明 

    pattern (模式):表示正则表达式的文本,也可以是正则表达式对象。 

    flags (标记):是一个可选的字符串,包含属性 "g"、"i" 和 "gi",属性说明见下文。如果 pattern 是正则表达式对象,而不是字符串,则必须省略此参数。

     

    flags各属性值说明

    g:global match(全局匹配) 

    i:ignore case(忽略大小写) 

    gi:both global match and ignore case(匹配所有可能的值,也忽略大小写)

     

    注意:文字格式中的参数不要使用引号标记,而构造函数的参数(当参数是字符串时)则要使用引号标记。所以下面的两种创建方式是等价的:

    var reg = /ab+c/g;
    var reg = new RegExp("ab+c","g"); 

    另外,当使用构造函数创建正则表达式的时候,若参数是字符串,在文字格式中需要转义的地方,到了构造函数的字符串参数中就要进行双重转义。

    因为,文字格式的正则表达式里,使用元字符(下面会提到什么是元字符)都要进行转义,而字符串中,使用字符“”要对其自身转义。

    也就是说,构造函数创建正则表达式,其第一个参数为字符串时,如果要用到元字符,都要进行双重转义。

    例如,下面的两条语句是等价的:

    var reg = new RegExp("\字符串");  //双重转义
    var reg = /字符串/; 

    元字符

    (  [  {    ^   $  |  )   ?  *  + 

    任何时候要使用这些元字符 ,都必须对它们进行转义。如:

    var reg = new RegExp("\[0-9]");  
    var reg = /[0-9]/; 

    元字符可以与常规字符搭配,就能搭配出具有不同意义的表达式,各种意义不同的表达式组合起来,就能组成匹配功能强大的复杂表达式。

    下面将列出元字符与常规搭配,所具有的不同意义。

     

    方括号用于查找某个范围内的字符

    表达式描述
    [abc] 查找方括号之间的任何字符。
    [^abc] 查找任何不在方括号之间的字符。
    [0-9] 查找任何从 0 至 9 的数字。
    [a-z] 查找任何从小写 a 到小写 z 的字符。
    [A-Z] 查找任何从大写 A 到大写 Z 的字符。
    [A-z] 查找任何从大写 A 到小写 z 的字符。
    [adgk] 查找给定集合内的任何字符。
    [^adgk] 查找给定集合外的任何字符。
    (red|blue|green) 查找任何指定的选项。

    特殊含义字符

    元字符描述
    . 查找单个字符,除了换行符和回车之外的任意字符。 等价于:[^ ]
    w 查找单词字符。 等价于:[a-zA-Z_0-9]
    W 查找非单词字符。 等价于:[^a-zA-Z_0-9]
    d 查找数字。 等价于:[0-9]
    D 查找非数字字符。 等价于:[^0-9]
    s 查找空白字符。 等价于:[ x0Bf ]
    S 查找非空白字符。 等价于:[^ x0Bf ]
     匹配单词边界。
    B 匹配非单词边界。
    查找 NUL 字符。
    查找换行符。
    f 查找换页符。
    查找回车符。
    查找制表符。
    v 查找垂直制表符。
    xxx 查找以八进制数 xxx 规定的字符。
    xdd 查找以十六进制数 dd 规定的字符。
    uxxxx 查找以十六进制数 xxxx 规定的 Unicode 字符。

    量词

    量词描述
    n+ 匹配任何包含至少一个 n 的字符串。
    n* 匹配任何包含零个或多个 n 的字符串。
    n? 匹配任何包含零个或一个 n 的字符串。
    n{X} 匹配包含 X 个 n 的序列的字符串。
    n{X,Y} 匹配包含 X 至 Y 个 n 的序列的字符串。
    n{X,} 匹配包含至少 X 个 n 的序列的字符串。
    n$ 匹配任何结尾为 n 的字符串。
    ^n 匹配任何开头为 n 的字符串。
    ?=n 匹配任何其后紧接指定字符串 n 的字符串。
    ?!n 匹配任何其后没有紧接指定字符串 n 的字符串。

    RegExp 对象属性

    属性描述FFIE
    global RegExp 对象是否具有标志 g。 1 4
    ignoreCase RegExp 对象是否具有标志 i。 1 4
    lastIndex 一个整数,标示开始下一次匹配的字符位置。 1 4
    multiline RegExp 对象是否具有标志 m。 1 4
    source 正则表达式的源文本。 1 4

    RegExp 对象方法

    方法描述FFIE
    compile 编译正则表达式。 1 4
    exec 检索字符串中指定的值。返回找到的值,并确定其位置。 1 4
    test 检索字符串中指定的值。返回 true 或 false。 1 4

    支持正则表达式的 String 对象的方法

    方法描述FFIE
    search 检索与正则表达式相匹配的值。 1 4
    match 找到一个或多个正则表达式的匹配。 1 4
    replace 替换与正则表达式匹配的子串。 1 4
    split 把字符串分割为字符串数组。 1 4
  • 相关阅读:
    vue中v-slot使用
    Angular服务
    Angular的使用
    Angular介绍
    缓存组件
    mvvm和mvc的区别
    vue项目优化
    windows环境安装和使用curl与ES交互
    Java自定义注解
    ajax异步请求后台数据处理
  • 原文地址:https://www.cnblogs.com/czf-zone/p/3462543.html
Copyright © 2011-2022 走看看