zoukankan      html  css  js  c++  java
  • RegExp正则表达式(三)–js中正则表达式的定义

    在js中,RegExp正则表达式的定义有两种方式:一种是普通方式,另一种是构造函数方式。无论是那种定义正则表达式的方式,它们都会返回RegExp对象。


    普通方式定义正则表达式的格式

    语法:

    var 变量名 = /正则表达式/附加参数
    • 1

    附加参数是用来扩展表达式含义的,目前有三种附加参数。分别是:

    g:表达式进行全局匹配
    i:匹配时不区分英文的大小写
    m:可以进行多行匹配

    其中全局匹配(g)是指,匹配字符串时,直到所有字符串全部查找完成才会停止匹配。

    而非全局匹配是指,匹配字符串时,有一处匹配成功或查找至字符串的结尾,其中只要有一个条件满足时,就停止匹配。

    m表明表达式可以进行多行匹配。但这个参数只有当表达式中使用”^”(以……开头)或”$”(以……结尾)特殊字符时才会起作用,如果表达式中没有”^”或”$”特殊字符时,加不加m参数都不影响匹配的结果。

    这三种参数可以随意组合,也可以不加附加参数。默认的定义正则表达式(即不加附加参数)是非全局匹配,区分大小写,单行匹配。

    举个栗子
    如:

    //启用全局匹配,区分大小写,多行匹配)
     var reg = /w/gim;
    • 1
    • 2
    //启用默认的附加参数
     var reg = /w/;
    • 1
    • 2

    有如下文本:

    acbbfff
    abccff

    如果采用/^a./g,则匹配结果为”ac”;
    如果采用/^a./gm,则匹配结果为”ac”和”ab”。
    如果采用/^a./m,则匹配结果为”ac”
    如果采用/a./gm,则匹配结果为”ac”和”ab”
    如果采用/a./g,则匹配结果为”ac”和”ab”
    • 1
    • 2
    • 3
    • 4
    • 5

    构造函数方式定义正则表达式的格式

    语法:

    var 变量名 = new RegExp(“正则表达式”,”附加参数”);
    • 1

    var 变量名 = new RegExp(/正则表达式/附加参数);
    • 1

    使用方式和普通方式的一样。
    如:

    var reg = new RegExp(“w*”,”gim”);
    • 1
    var reg = new RegExp(/w*/gim);
    • 1

    总结
    以上两种定义正则表达式的区别:
    普通的定义方式,表达式必须是一个常量字符串
    如:

    var reg = /a./gim;
    • 1

    而构造函数的定义方式,表达式可以是常量,也可以是变量
    如:

    var t1 = “a.”;
    var reg1 = new RegExp(t1,”gim”); //表达式是变量
    var t2 = “a\w”;
    var reg2 = new RegExp(t2,”gim”); //表达式是变量
    • 1
    • 2
    • 3
    • 4

    var reg = new RegExp(/a./gim); //表达式是常量
    • 1

    附注

    • 无论是普通的正则表达式定义还是构造函数的正则表达式定义,其返回值都是RegExp对象。

    • 如果表达式是变量字符串时,w,d这一类匹配字符集的特殊字符,要写成”\w”,”\d”这种格式。原因是,字符串在解析时会把””符号解析成转义字符,如果要使其解析成””字符,就要写成”\”

  • 相关阅读:
    设计模式之构造模式
    设计模式之创建模式
    用mongodb 固定集合实现只保留固定数量的记录,自动淘汰老旧数据
    多线程何如获取返回值
    基于redis的消息订阅与发布
    multiple类型的select option在django后台如何取值
    使用redis分布式锁解决并发线程资源共享问题
    数据库架构
    MongoDB数据库设计中6条重要的经验法则
    【mysql】开启binlog后异常:impossible to write to binary log since BINLOG_FORMAT = STATEMENT
  • 原文地址:https://www.cnblogs.com/ypyp123/p/13968306.html
Copyright © 2011-2022 走看看