首页 web前端 js教程 JS正则中的RegExp对象对象_javascript技巧

JS正则中的RegExp对象对象_javascript技巧

May 16, 2016 pm 05:48 PM
regexp 正则

有两种方式可以创建RegExp对象的实例。

使用RegExp的显式构造函数,语法为:new RegExp("pattern"[,"flags"])。
使用RegExp的隐式构造函数,采用纯文本格式:/pattern/[flags]。

pattern部分为要使用的正则表达式模式文本,是必须的。在第一种方式中,pattern部分以JavaScript字符串的形式存在,需要使用双引号或单引号括起来;在第二种方式中,pattern部分嵌套在两个“/”之间,不能使用引号。

flags部分设置正则表达式的标志信息,是可选项。如果设置flags部分,在第一种方式中,以字符串的形式存在;在第二种方式中,以文本的形式紧接在最后一个“/”字符之后。flags可以是以下标志字符的组合。
g是全局标志。如果设置了这个标志,对某个文本执行搜索和替换操作时,将对文本中所有匹配的部分起作用。如果不设置这个标志,则仅搜索和替换最早匹配的内容。

i是忽略大小写标志。如果设置了这个标志,进行匹配比较时,将忽略大小写。

m是多行标志。如果不设置这个标志,那么元字符“^”只与整个被搜索字符串的开始位置相匹配,而元字符“$”只与被搜索字符串的结束位置相匹配。如果设置了这个标志,“^”还可以与被搜索字符串中的“ ”或“ ”之后的位置(即下一行的行首)相匹配,而“$”还可以与被搜索字符串中的“ ”或“ ”之后的位置(即下一行的行尾)相匹配。

代码1.1是一个创建正则表达式的例子。
代码1.1 创建正则表达式:1.1.htm

复制代码 代码如下:



创建正则表达式




上面代码的运行结果如图8.1所示。
由于JavaScript字符串中的“”是一个转义字符,因此,使用显式构造函数创建RegExp实例对象时,应将原始正则表达式中的“”用“\”替换。例如,在代码1.2中的两条语句是等价的。
代码1.2 转义字符中的“”:1.2.htm
复制代码 代码如下:



由于正则表达式模式文本中的转义字符也是“”,如果正则表达式中要匹配原义字符“”,在正则表达式模式文本中要以“\”来表示,当使用显式构造函数的方式创建RegExp实例对象的时候,就需要使用“\\\”来表示原义字符“”。
var re = new RegExp(\\\\)。

1 RegExp对象的属性

RegExp对象的属性分为静态属性和实例属性。下面分别进行介绍。

1.1 静态属性
(1)index属性。是当前表达式模式首次匹配内容的开始位置,从0开始计数。其初始值为-1,每次成功匹配时,index属性都会随之改变。
(2)input属性。返回当前所作用的字符串,可以简写为$_,初始值为空字符串""。
(3)lastIndex属性。是当前表达式模式首次匹配内容中最后一个字符的下一个位置,从0开始计数,常被作为继续搜索时的起始位置,初始值为-1,表示从起始位置开始搜索,每次成功匹配时,lastIndex属性值都会随之改变。
(4)lastMatch属性。是当前表达式模式的最后一个匹配字符串,可以简写为$&。其初始值为空字符串""。在每次成功匹配时,lastMatch属性值都会随之改变。
(5)lastParen属性。如果表达式模式中有括起来的子匹配,是当前表达式模式中最后的子匹配所匹配到的子字符串,可以简写为$+。其初始值为空字符串""。每次成功匹配时,lastParen属性值都会随之改变。
(6)leftContext属性。是当前表达式模式最后一个匹配字符串左边的所有内容,可以简写为$`(其中“'”为键盘上“Esc”下边的反单引号)。初始值为空字符串""。每次成功匹配时,其属性值都会随之改变。
(7)rightContext属性。是当前表达式模式最后一个匹配字符串右边的所有内容,可以简写为$'。初始值为空字符串""。每次成功匹配时,其属性值都会随之改变。
(8)$1…$9属性。这些属性是只读的。如果表达式模式中有括起来的子匹配,$1…$9属性值分别是第1个到第9个子匹配所捕获到的内容。如果有超过9个以上的子匹配,$1…$9属性分别对应最后的9个子匹配。在一个表达式模式中,可以指定任意多个带括号的子匹配,但RegExp对象只能存储最后的9个子匹配的结果。在RegExp实例对象的一些方法所返回的结果数组中,可以获得所有圆括号内的子匹配结果。

1.2 实例属性

(1)global属性。返回创建RegExp对象实例时指定的global标志(g)的状态。如果创建RegExp对象实例时设置了g标志,该属性返回True,否则返回False,默认值为False。
(2)ignoreCase属性。返回创建RegExp对象实例时指定的ignoreCase标志(i)的状态。如果创建RegExp对象实例时设置了i标志,该属性返回True,否则返回False,默认值为False。
(3)multiLine属性。返回创建RegExp对象实例时指定的multiLine标志(m)的状态。如果创建RegExp对象实例时设置了m标志,该属性返回True,否则返回False,默认值为False。
(4)source属性。返回创建RegExp对象实例时指定的表达式文本字符串。

JS中的RegExp对象(二)

2 RegExp对象的方法
RegExp对象的常用方法有test、exec和compile,本节介绍这些方法的功能和用法。最后,对RegExp对象的属性和方法进行一个综合举例。
2.1 test方法
语法格式为test(str)。该方法检查一个字符串中是否存在创建RegExp对象实例时所指定的表达式模式,如果存在就返回True,否则返回False。如果找到匹配项,则会更新RegExp对象中的有关静态属性,以反映匹配情况。
2.2 exec方法
语法格式为exec(str)。该方法使用创建RegExp对象实例时所指定的表达式模式对一个字符串进行搜索,并返回一个包含搜索结果的数组。
如果为正则表达式设置了全局标志(g),可以通过多次调用exec和test方法在字符串中进行连续搜索,每次都是从RegExp对象的lastIndex属性值指定的位置开始搜索字符串。
如果没有设置全局标志(g),则exec和test方法忽略RegExp对象的lastIndex属性值,从字符串的起始位置开始搜索。
如果exec方法没有找到匹配,返回值为null;如果找到匹配,则返回一个数组,并更新RegExp对象中有关静态属性以反映匹配情况。返回数组中的元素0包含了完整的匹配结果,而元素1~n依次是表达式模式中定义的各个子匹配的结果。
exec方法返回的数组有3个属性,分别是input、index和lastIndex。
input属性是整个被搜索的字符串。
index属性是指匹配在整个被搜索字符串中的位置。
lastIndex属性是指匹配的子字符串的最后一个字符的下一个字符位置。
代码2.1是对该方法的应用举例。
代码2.1 exec()方法应用:2.1.htm
复制代码 代码如下:



exec()方法应用




2.3 compile方法

语法格式为compile("pattern"[,"flags"])。该方法可以更换RegExp对象实例所使用的表达式模式,并将新的表达式模式编译为内部格式,从而使以后的匹配过程执行更快。如果要在循环中重复使用某个表达式,对其进行编译将使执行加速。但是,如果在程序中使用了任何其他表达式模式后,再使用原来编译过的表达式模式,则这种编译毫无 益处。

2.4 综合举例

代码2.2是对RegExp对象的综合举例,认真分析代码及其运行结果,可以更好地理解RegExp对象。
代码2.2 RegExp对象的使用:2.2.htm
复制代码 代码如下:


本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

如何用php正则替换以什么开头的字符串 如何用php正则替换以什么开头的字符串 Mar 24, 2023 pm 02:57 PM

PHP正则表达式是一种针对文本处理和转换的有力工具。它可以通过解析文本内容,并按照特定的模式进行替换或截取,达到有效管理文本信息的目的。其中,正则表达式的一个常见应用是替换以特定字符开头的字符串,对此,我们进行如下的讲解

如何用 Golang 正则匹配多个单词或字符串? 如何用 Golang 正则匹配多个单词或字符串? May 31, 2024 am 10:32 AM

Golang正则表达式使用管道符|来匹配多个单词或字符串,将各个选项作为逻辑OR表达式分隔开来。例如:匹配"fox"或"dog":fox|dog匹配"quick"、"brown"或"lazy":(quick|brown|lazy)匹配"Go"、"Python"或"Java":Go|Python|Java匹配单词或4位邮政编码:([a-zA

php 如何用正则去除中文 php 如何用正则去除中文 Mar 03, 2023 am 10:12 AM

php用正则去除中文的方法:1、创建一个php示例文件;2、定义一个含有中文和英文的字符串;3、通过“preg_replace('/([\x80-\xff]*)/i','',$a);”正则方法去除查询结果中的中文字符即可。

php怎么利用正则匹配去掉html标签 php怎么利用正则匹配去掉html标签 Mar 21, 2023 pm 05:17 PM

在本文中,我们将学习如何使用PHP正则表达式删除HTML标签,并从HTML字符串中提取纯文本内容。 为了演示如何去掉HTML标记,让我们首先定义一个包含HTML标签的字符串。

MySQL的REGEXP和LIKE有什么区别 MySQL的REGEXP和LIKE有什么区别 May 30, 2023 pm 01:58 PM

1、在匹配内容上的区别LIKE要求整个数据都要匹配,用Like,必须这个字段的所有内容满足条件;REGEXP只需要部分匹配即可,只需要有任何一个片段满足即可。2、在匹配位置上的区别LIKE匹配整个列,如果被匹配的文本在列值中出现,LIKE将不会找到它,相应的行也不会被返回(除非使用通配符);REGEXP在列值内进行匹配,如果被匹配的文本在列值中出现,REGEXP将会找到它,相应的行将被返回,并且REGEXP能匹配整个列值(与LIKE相同的作用)。3、SQL语句返回数据区别LIKE匹配:该SQL语

如何使用PHP正则表达式验证URL是否为HTTPS协议 如何使用PHP正则表达式验证URL是否为HTTPS协议 Jun 24, 2023 am 08:16 AM

网站安全性越来越受到关注,使用HTTPS协议保证数据传输的安全性已成为当前网站开发的一个重要内容。在PHP开发中,如何使用正则表达式验证URL是否为HTTPS协议呢?下面我们就来了解一下。正则表达式正则表达式是一种用来描述规律的表达式,是处理文本的强大工具,被广泛应用于文本匹配、搜索和替换等方面。在PHP开发中,我们可以通过正则表达式来匹配URL中的http

使用PHP正则实现中文替换功能的技巧分享 使用PHP正则实现中文替换功能的技巧分享 Mar 24, 2024 pm 05:57 PM

使用PHP正则实现中文替换功能的技巧分享在web开发中,经常会遇到需要对中文内容进行替换的情况。PHP作为一种流行的服务器端脚本语言,提供了强大的正则表达式功能,可以很方便地实现中文替换。本文将分享一些在PHP中使用正则实现中文替换的技巧,同时提供具体的代码示例。1.使用preg_replace函数实现中文替换PHP中的preg_replace函数可以用来

在JavaScript的RegExp中查找括号中的数字? 在JavaScript的RegExp中查找括号中的数字? Aug 20, 2023 pm 06:45 PM

在本教程中,我们学习如何使用JavaScriptRegExp找到括号中的数字。数字(0-9)的ASCII值从48到57。我们在正则表达式中用[0-9]表示括号中的数字。要找到除所有数字之外的范围内的数字,我们可以写出特定的范围。例如,要找到4和8之间的数字,我们可以在正则表达式模式中写为[4-8]。现在,我们的目标是使用JavaScript中的RegExp在文本中找到括号内的数字。我们可以按照以下语法来找到括号中的数字。Syntax以下是RegExp组[0-9]字符的语法-newRegExp(&

See all articles