在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”这种格式。原因是,字符串在解析时会把”\”符号解析成转义字符,如果要使其解析成”\”字符,就要写成”\\”

RegExp正则表达式(三)–js中正则表达式的定义的更多相关文章

  1. 正则表达式在JS中的使用

    <script type="text/javascript"> /** *正则表达式在js中的第一种使用方式: * RegExp 通过构造器去使用正则表达式 需要对反斜 ...

  2. js课程 4-12 js中正则表达式如何使用

    js课程 4-12 js中正则表达式如何使用 一.总结 一句话总结: 1.js正则表达式手册取哪里找? w3cschool或者菜鸟教程->找到js正则表达式->完整的RegExp参考手册这 ...

  3. js中使用function定义类、实例化,函数的调用方法

    function Test002(name, age){ name, age, this.printInfo = function(){ //定义的公有方法 console.log(name, age ...

  4. js中正则表达式的模式匹配

    参考Javascript权威指南(第6版)第10章 1.正则表达式的定义 正则表达式有两种定义方法,通常使用直接量方式. (1)直接量 var pattern = /\d$/; var pattern ...

  5. js中正则表达式使用

    js中使用正则表达式,除了了解正则表达式基本的匹配规则外.还需要了解下面的基本的知识: python,js,groovy这些脚本语言都有在线调试的网站,可以在线测试是否有语法错误,用起来也很方便. v ...

  6. js中正则表达式的易错点

    文章目录 1. 匹配符部分匹配规则 2. 分组匹配规则: 3. 注意^的不同用法 4. 不要忘记转义 5. 正则表达式对象中lastIndex属性 6. exec VS match 1. 匹配符部分匹 ...

  7. js中正则表达式与Python中正则表达式的区别

    今天女票让我帮她写一个js中的正则,来提取电话号码,对于正则规则来说,js与python是基本没有区别的,重点的区别是在一些函数与方法中. python中的正则提取: import re str = ...

  8. 在js中正则表达式验证小时分钟,将输入的字符串转换为对应的小时和分钟

    文章目录 1.预备知识 2.在js中的代码片段 3.测试结果 1.预备知识 splict()方法 Date()的相关方法 setHours()的用法 2.在js中的代码片段 //验证小时和分钟 var ...

  9. JS中正则表达式

    正则表达式用于对字符串模式匹配及检索替换,是对字符串执行模式匹配的强大工具.简单来说正则表达式就是处理字符串的,我们可以用它来处理一些复杂的字符串. 1.创建方式 pattern(模式):描述了表达式 ...

随机推荐

  1. 【PS】证件照修改尺寸

    证件照同时修改尺寸.分辨率.像素 2019-07-14  12:56:25  by冲冲 1. 需求 实现证件照自由切换一寸.小一寸.大一寸.二寸. 2. 步骤 ① 裁剪工具 -- 原始比例 -- 存储 ...

  2. CF1574D The Strongest Build

    考虑到有\(m\)个限制,可以考虑\(m+1\)个最大的答案,这样可以利用鸽笼原理得到答案. 这是一般做法. 但是这样的题目,我们发现\(n\)个操作都是独立的. 那么我们可以全部都选取最大,并以此调 ...

  3. [NOI Online #3 提高组] 魔法值

    现在只会\(O(qn^3log)\)的\(40pts\)做法,鸽了. 反正就是预处理之后,去掉一个\(n\). 我预处理了,没去\(n\),hhhh,成功减少了一半的常数.

  4. Codeforces 986E - Prince's Problem(树上前缀和)

    题面传送门 题意: 有一棵 \(n\) 个节点的树,点上有点权 \(a_i\),\(q\) 组询问,每次询问给出 \(u,v,w\),要求: \(\prod\limits_{x\in P(u,v)}\ ...

  5. P3571 [POI2014]SUP-Supercomputer

    *X. P3571 [POI2014]SUP-Supercomputer 题意简述:一棵以 \(1\) 为根的树.\(q\) 次询问,每次给出 \(k\),求至少要多少次同时访问不超过 \(k\) 次 ...

  6. python18协程

    协程是我们自己调度的 进程是系统调度的协程切换很少开销 python3.5之前的实现方法 def yield_test(): """实现协程函数""& ...

  7. 巩固java第七天

    巩固内容: HTML 属性 属性是 HTML 元素提供的附加信息. HTML 属性 HTML 元素可以设置属性 属性可以在元素中添加附加信息 属性一般描述于开始标签 属性总是以名称/值对的形式出现,比 ...

  8. A Child's History of England.36

    CHAPTER 11 ENGLAND UNDER MATILDA AND STEPHEN The King was no sooner dead than all the plans and sche ...

  9. COAP协议 - arduino ESP32 M2M(端对端)通讯与代码详解

    前言 最近我在研究 COAP 协议,在尝试使用 COAP 协议找了到了一个能在ESP32上用的coap-simple库,虽然库并不完善关于loop处理的部分应该是没写完,但是对于第一次接触COAP的朋 ...

  10. Vue相关,vue父子组件生命周期执行顺序。

    一.实例代码 父组件: <template> <div id="parent"> <child></child> </div& ...