位置: 编程技术 - 正文

理解javascript正则表达式(简要说明javascript的作用)

编辑:rootadmin

推荐整理分享理解javascript正则表达式(简要说明javascript的作用),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:javascript的理解,javascript原理详解,细说javascript,javascript总结,javascript原理详解,javascript原理详解,细说javascript,javascript原理详解,内容如对您有帮助,希望把文章链接给更多的朋友!

了解RegExp类型:

ECMAScript通过RegExp类型来支持正则表达式。 var expression=/pattern/flags;

正则表达式的模式(pattern)部分:

可以是任何简单或复杂的正则表达式,可以包含字符类,限定符,分组,向前查找,反向引用。 关于正则表达式中各种特殊字符(如 ,^,$,w,b 等)的含义可以参考 MDN 正则表达式-特殊字符 的整理。这里我们简单介绍一下向前查找和反向引用。

向前查找:正则表达式向前使用一些字符而不移动这些字符的位置,分为正向前预搜索也叫正向肯定查找( x(&#;=y) )与负向前预搜索也叫正向否定查找( x(&#;!y) )。反向引用:标识字符串中可以提供的重复字符或字符串,可以使用捕获组反向引用匹配。带编号的反向引用 number number是正则表达式中捕获组的序号位置。1、表达式 1~9 解释为反向引用而不是八进制代码。 /b(w+)s1/.exec('s_ s_');//["s_ s_", "s_"]2、如果多位表达式的第一个数字是8或者9(如 或 ),则该表达式将被解释为文本。 /b(w+)s/.exec('s_ ');//["s_ ", "s_"]3、对于编号为 或更大值的表达式,如果存在与该编号对应的反向引用,则将该表达式视为反向引用。否则将这些表达式解释为八进制。

4、如果捕获组嵌套捕获组,捕获组确定的顺序是内部从外到内,外部从左到右。来个代码体会一下。/b(w+x(x))s(1)/.exec('s_xx s_xxSTOP');//["s_xx s_xx", "s_xx", "x", "s_xx"]5、如果正则表达式包含对未定义的组成员的反向引用,则会发生分析错误,根据语言的不同正则表达式引擎将引发 ArgumentEXception 。对于javascript会返回null。/b(w+)s2/.exec('s_ 8');//null反向引用实例代码:捕获组捕获到的内容不仅可以在正则表达式外部通过程序进行引用( RegExp.$n )也可以在正则表达式内部进行引用( number ,这种引用方式就是反向引用)。

正则表达式的标志位(flags)部分:

可以带有一个或多个标志,用以表明正则表达式的行为。

1、g:表示全局模式,模式将被应用于所有字符串,而非在发现第一个匹配项时立即停止。 'cat mat bat'.replace(/.(&#;=at)/g,'A');//"Aat Aat Aat" 2、i:不区分大小写模式,在确定匹配项时忽略模式与字符串的大小写。 'cAt mat bAt'.replace(/a/gi,'B');//"cBt mBt bBt" 3、m:多行模式,在到达一行文本末尾时还会继续查找下一行中是否存在与模式匹配的项。

正则表达式中的元字符部分:

在模式中使用这些元字符时必须转义,如果想要匹配的字符串中包含这些字符,就需要对他们进行转义。

创建正则表达式:

字面量形式:形如 var expression=/pattern/flags; RegExp构造函数:两个参数(要匹配的字符串模式,可选的标志字符串),不能把正则表达式字面量传递给构造函数,虽然即使这样写了也不会报错。可以使用字面量定义的任何表达式都可以使用构造函数来定义。如下:

1、当不传任何参数或参数一为空字符串时, new RegExp();// /(&#;:)/ 或 new RegExp('');// /(&#;:)/ ,表示匹配 "" 但不记住匹配项( "" 其实就是 ":" 之后的空串,不记住x匹配项的规则为(&#;:x)),所以在匹配任何字符串时都返回 [""] 。所以由此可以猜想一下javascript正则引擎内部机制应该是默认匹配 "" 且不记住该匹配项,除非显式声明在 ":" 之后的需要匹配的字符串,加上 "(&#;:)" 显式声明不记住匹配项。2、由于构造函数模式参数是字符串,所以某些情况下(是指那些已经转义过的字符)对字符进行双重转义(即在字面量形式的单重转义再来一层转义)。某些情况下当然也可以进行单重转移( new RegExp('w');// /w/ )。注意''比较特殊,在字符串中也需要进行转义。

3、下面给出一些单重,双重转义模式的参考:第几次转义在表中已标出,单代表第一次转义,双代表在已经有的转义的基础上再进行的转义。

理解javascript正则表达式(简要说明javascript的作用)

RegExp的实例属性:

通过实例的属性可以获取有关模式的各种信息

global :布尔值,表示是否设置了g标志。 ignoreCase :布尔值,表示是否设置了i标志。 multiline :布尔值,表示是否设置了m标志。 lastIndex :整数,表示开始搜索下一个匹配项的字符位置,从0算起。前提是设置g标志时才会有用。 source :正则表达式的字符串标志,按照字面量形式而非构造函数中的字符串模式返回字符串。

RegExp的实例方法:

exec():该方法是专门为捕获组而设计的,参数为要匹配的字符串,返回包含第一个匹配项信息和可能有的捕获组的数组,若未匹配到返回 null 。(返回的虽然是 Array 的实例,但还包含两个额外的属性: index 表示匹配项在字符串中的位置, input 表示应用正则表达式的字符串)

exec() 和 match() 方法的区别:

1、对于 exec() 而言,即使在模式中设置了全局标志g,它每次也只返回一个匹配项;字符串的 match() 方法在设置g的时候可以返回全部匹配项而没有捕获组且返回的数组没有index和input属性。

2、对于exec()而言可以返回捕获组,但match()在没有全局g标志时才能返回捕获组,此时match()返回的数组有index和input属性。

3、所以在选择使用方法的时候要先考虑好侧重该方法的哪方面功能,在不设置全局标志g的情况下,在同一个字符串上多次调用exec()则总是返回第一个匹配项的信息,而在设置全局标志的情况下,每次调用exec()则都会在字符串中沿着上次查找的位置往后继续查找新的匹配项。

test():接收字符串参数,在模式与字符串参数匹配情况下返回 true ,否则返回 false 。常被用在 if() 中当判断条件。

RegExp 实例继承 Object 的 toLocaleString() 和 toString() 方法都会返回正则表达式的字面量形式的字符串,与如何创建正则表达式的方式无关。 valueOf() 则返回正则表达式字面量本身。

RegExp的构造函数属性:

构造函数本身包含一些属性(静态属性),这些属性适用于作用域中的所有表达式,并且基于所执行的最近一次正则表达式操作而变化。有长属性名(如下代码)和短属性名(即$前缀形式,由于这些符号大多不是有效的ECMAScript标识符,所以不能直接在 RegExp 构造函数上以 "." 的方式访问,而要通过方括号语法来访问)两种方式访问这些属性

捕获组访问属性:还有9个用于存储捕获组的构造函数属性,访问语法是 RegExp.$n ,其中n取值1~9,用于获取第n个匹配的捕获组。在调用 exec() , test() 或 match() 等正则系列方法时这些属性会被自动填充。

模式的局限性:

缺少一些高级正则表达式的特性,如不支持向后查找,命名的捕获组(形如 k<name> 引用之前名为 name 的捕获组的字符串)等。

推荐专题: 《javascript正则表达式使用说明》

标签: 简要说明javascript的作用

本文链接地址:https://www.jiuchutong.com/biancheng/377454.html 转载请保留说明!

上一篇:JS中多种方式创建对象详解(js创建对象的三种方式)

下一篇:JS实现设置ff与ie元素绝对位置的方法(javascript ie)

  • 税务纳税等级m级是什么等级
  • 小规模企业所得税多少
  • 电子税务局怎么查进项发票明细
  • 甲企业持有乙企业的非上市股票2000股
  • 销项负数的分录怎么做
  • 差额征收企业指什么企业
  • 注册资本印花税按年申报还是按次申报
  • 个税申报导入上月数据
  • 收银设备如何入账的
  • 税控技术维护费每年都能抵扣吗
  • 旅游开发行业的会计怎么做
  • 期末存货跌价准备金额的确定
  • 工业企业购买电机会计分录
  • 企业少报收入
  • 企业开普票和专票的税率一样吗
  • 企业汇算清缴逾期去补交要带什么资料
  • 一般纳税人是什么等级
  • 赠送的产品需要开发票吗
  • 开票3个点13个点是什么意思
  • 餐饮店收入是销售收入吗
  • 法人实名认证后为什么查不到名下公司
  • 新会计准则规定资产如何入账
  • 商会会费收取
  • 公司如何为员工缴纳社保
  • 收到个税返还手续费怎么开发票
  • 路由器间歇性断网怎么解决
  • 软件开发并销售怎么做
  • 分公司是小微企业总公司是一般纳税人,如何做合并报表
  • 纳税人如何申请延期缴纳税款
  • neoCapture.exe - neoCapture是什么进程 有什么用
  • 如何在Mac上更改我的Apple ID
  • 外购货物用于职工奖励
  • 土地使用税若干问题的补充规定
  • 个人所得税有哪些可以减免的项目
  • 外贸企业进料加工复出口退税政策
  • vue清空input file的值
  • javascript创建对象及应用
  • 没有关系怎么表达
  • cvpr2020目标跟踪
  • es6箭头函数写法
  • 网页开票流程图解
  • 好用的微信小程序邮箱有哪些
  • discuz设置门户
  • 银行对账单由谁负责
  • 存货成本核算方法的多久变更
  • mongotemplate 分页查询
  • 市政绿化工程的施工方案
  • 办公室装修用什么材料便宜
  • 应付利息的会计分录怎么写
  • 小规模企业免税收入会计分录
  • 陕西省跨区域企业所得税征收
  • 企业销售收入确认条件
  • 工会经费记在什么科目
  • 车船税税金及附加
  • 多计提的税费怎么处理
  • 税盘不缴费会怎么样
  • 年度损益调整的会计分录
  • 同一个sql语句 连接两个数据库服务器
  • mysql索引的使用和原理
  • 台式电脑NUM LOCK键还能亮,算不算死机了
  • 师说词类活用
  • vi编辑器使用教程
  • GhostXP装机版v3.0
  • 开机提示按CTRL+ALT+DEL,无限重启怎么办
  • win10再出变故 微软撤下Windows Update中11月份更新
  • neoCapture.exe - neoCapture是什么进程 有什么用
  • win8怎么快速开机
  • win10右键菜单不显示
  • AsyncTask onPostExecute()不执行,与JPush冲突
  • shell(bash)下“time” 命令的输出详解
  • Fast TileMap
  • code::blocks怎么用
  • cluster into
  • ajax multipart/form-data
  • 有道词典下载安装
  • app开发指南
  • jquery更换图片
  • 武汉经济技术开发区法院立案庭电话
  • 票种核定流程审批时间
  • 累计预扣预缴税额
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设