`
yushan
  • 浏览: 146157 次
  • 性别: Icon_minigender_1
  • 来自: 厦门
社区版块
存档分类
最新评论

javascript正则式

阅读更多

PS:以下内容都来自互联网

JS正则表达式(基本语法)

在对正则表达式的功能和作用有了初步的了解之后,我们就来具体看一下正则表达式的语法格式。 正则表达式的形式一般如下:  

/love/  其中位于“/”定界符之间的部分就是将要在目标对象中进行匹配的模式。用户只要把希望查找匹配对象的模式内容放入“/”定界

符之间即可。为了能够使用户更加灵活的定制模式内容,正则表达式提供了专门的“元字符”。所谓元字符就是指那些在正则表达式中具有特

殊意义的专用字符,可以用来规定其前导字符(即位于元字符前面的字符)在目标对象中的出现模式。 较为常用的元字符包括: “+”, “*

”,以及 “?”。

“+”元字符规定其前导字符必须在目标对象中连续出现一次或多次。

“*”元字符规定其前导字符必须在目标对象中出现零次或连续多次。

“?”元字符规定其前导对象必须在目标对象中连续出现零次或一次。

下面,就让我们来看一下正则表达式元字符的具体应用。

/fo+/  因为上述正则表达式中包含“+”元字符,表示可以与目标对象中的 “fool”, “fo”, 或者 “football”等在字母f后面连续出现

一个或多个字母o的字符串相匹配。

/eg*/  因为上述正则表达式中包含“*”元字符,表示可以与目标对象中的 “easy”, “ego”, 或者 “egg”等在字母e后面连续出现零个

或多个字母g的字符串相匹配。

/Wil?/  因为上述正则表达式中包含“?”元字符,表示可以与目标对象中的 “Win”, 或者“Wilson”,等在字母i后面连续出现零个或一

个字母l的字符串相匹配。

有时候不知道要匹配多少字符。为了能适应这种不确定性,正则表达式支持限定符的概念。这些限定符可以指定正则表达式的一个给定组件必

须要出现多少次才能满足匹配。

{n} n 是一个非负整数。匹配确定的 n 次。例如,'o{2}' 不能匹配 "Bob" 中的 'o',但是能匹配 "food" 中的两个 o。

{n,} n 是一个非负整数。至少匹配 n 次。例如,'o{2,}' 不能匹配 "Bob" 中的 'o',但能匹配 "foooood" 中的所有 o。'o{1,}' 等价于

'o+'。'o{0,}' 则等价于 'o*'。

{n,m} m 和 n 均为非负整数,其中n <= m。最少匹配 n 次且最多匹配 m 次。例如,"o{1,3}" 将匹配 "fooooood" 中的前三个 o。'o{0,1}'

等价于 'o?'。请注意在逗号和两个数之间不能有空格。

除了元字符之外,用户还可以精确指定模式在匹配对象中出现的频率。例如,/jim {2,6}/ 上述正则表达式规定字符m可以在匹配对象中连续出

现2-6次,因此,上述正则表达式可以同jimmy或jimmmmmy等字符串相匹配。 在对如何使用正则表达式有了初步了解之后,我们来看一下其它几

个重要的元字符的使用方式。

\s:用于匹配单个空格符,包括tab键和换行符;
\S:用于匹配除单个空格符之外的所有字符;
\d:用于匹配从0到9的数字;
\w:用于匹配字母,数字或下划线字符;
\W:用于匹配所有与\w不匹配的字符;
. :用于匹配除换行符之外的所有字符。

(说明:我们可以把\s和\S以及\w和\W看作互为逆运算) 下面,我们就通过实例看一下如何在正则表达式中使用上述元字符。 /\s+/ 上述正

则表达式可以用于匹配目标对象中的一个或多个空格字符。 /\d000/ 如果我们手中有一份复杂的财务报表,那么我们可以通过上述正则表达

式轻而易举的查找到所有总额达千元的款项。 除了我们以上所介绍的元字符之外,正则表达式中还具有另外一种较为独特的专用字符,即定位

符。定位符用于规定匹配模式在目标对象中的出现位置。 较为常用的定位符包括: “^”, “$”, “\b” 以及 “\B”。
“^”定位符规定匹配模式必须出现在目标字符串的开头
“$”定位符规定匹配模式必须出现在目标对象的结尾
“\b”定位符规定匹配模式必须出现在目标字符串的开头或结尾的两个边界之一
“\B”定位符则规定匹配对象必须位于目标字符串的开头和结尾两个边界之内,
      即匹配对象既不能作为目标字符串的开头,也不能作为目标字符串的结尾。

同样,我们也可以把“^”和“$”以及“\b”和“\B”看作是互为逆运算的两组定位符。举例来说: /^hell/ 因为上述正则表达式中包含“^

”定位符,所以可以与目标对象中以 “hell”, “hello”或“hellhound”开头的字符串相匹配。 /ar$/ 因为上述正则表达式中包含“$”

定位符,所以可以与目标对象中以 “car”, “bar”或 “ar” 结尾的字符串相匹配。 /\bbom/ 因为上述正则表达式模式以“\b”定位符开

头,所以可以与目标对象中以 “bomb”, 或 “bom”开头的字符串相匹配。/man\b/ 因为上述正则表达式模式以“\b”定位符结尾,所以可

以与目标对象中以 “human”, “woman”或 “man”结尾的字符串相匹配。 为了能够方便用户更加灵活的设定匹配模式,正则表达式允许使

用者在匹配模式中指定某一个范围而不局限于具体的字符。例如:
/[A-Z]/  上述正则表达式将会与从A到Z范围内任何一个大写字母相匹配。
/[a-z]/  上述正则表达式将会与从a到z范围内任何一个小写字母相匹配。
/[0-9]/  上述正则表达式将会与从0到9范围内任何一个数字相匹配。
/([a-z][A-Z][0-9])+/ 上述正则表达式将会与任何由字母和数字组成的字符串,如 “aB0” 等相匹配。

这里需要提醒用户注意的一点就是可以在正则表达式中使用 “()” 把字符串组合在一起。“()”符号包含的内容必须同时出现在目标对象中

。因此,上述正则表达式将无法与诸如 “abc”等的字符串匹配,因为“abc”中的最后一个字符为字母而非数字。 如果我们希望在正则表达

式中实现类似编程逻辑中的“或”运算,在多个不同的模式中任选一个进行匹配的话,可以使用管道符 “|”。例如:/to|too|2/ 上述正则

表达式将会与目标对象中的 “to”, “too”, 或 “2” 相匹配。正则表达式中还有一个较为常用的运算符,即否定符 “[^]”。与我们前文

所介绍的定位符 “^” 不同,否定符 “[^]”规定目标对象中不能存在模式中所规定的字符串。例如:/[^A-C]/ 上述字符串将会与目标对象

中除A,B,和C之外的任何字符相匹配。一般来说,当“^”出现在 “[]”内时就被视做否定运算符;而当“^”位于“[]”之外,或没有“[]

”时,则应当被视做定位符。最后,当用户需要在正则表达式的模式中加入元字符,并查找其匹配对象时,可以使用转义符“\”。例

如:/Th\*/  上述正则表达式将会与目标对象中的“Th*”而非“The”等相匹配。在构造正则表达式之后,就可以象数学表达式一样来求值,

也就是说,可以从左至右并按照一个优先级顺序来求值。优先级如下:
1.\ 转义符
2.(), (? , (?=), [] 圆括号和方括号
3.*, +, ?, {n}, {n,}, {n,m} 限定符
4.^, $, \anymetacharacter 位置和顺序
5.|“或”操作

 

JS中正规表达式有两种声明方式
1. 构造函数:var re = new RegExp('JavaScript', 'i') 其中i是正则式的模式标志,共有3个,i表示不区分大小写,g表示全局匹配,m表示多行匹配
2.直接量语法,包含在一对/中间,如 var re = /JavaScript/i

有特殊意义的字符
^ $ . * + ? = ! : | \ / () [] {}
尽管有些字符只在某些特殊的环境中才会有特殊意义,不过把它们当作直接量字符使用时最好用转义符\

字符类
将单独的直接量放进方括号里就可以组合成字符类,一个字符类和它所包含的任意一个字符相匹配,如/[ab]/与a或b匹配,/[^ab]/与除ab外的任意字符匹配,/[a-z]/与所有小写字母匹配,
有一个小tip需要注意,\b在JS的正则式中是用来匹配单字的边界的,所以要匹配退格符时需要写成/[\b]/

重复
*表式重复0到多次,+表示重复1到多次,?表示重复0到1次
{n}表示重复n次,{n,m}表示n到m次,{n,}表示至少n次
需要注意的是,这种重复匹配是贪婪的
在JS1.5之后支持非贪婪的匹配,做法是在后面加一个问号,如*? +?等

选择、分组、引用
| 号用来进行选择,如/ab|cd/与ab或cd匹配,它的工作方式相当于逻辑或,如果|号前面的匹配已经成功就忽略后面的匹配,如用/a|ab/对ab进行匹配操作时,它只匹配第一个字符a
() 将括号中的字符合为一组,称为一个子表达式,可以用\后接一个数字进行引用(\1 引用第一个带括号的子表达式),由于子表达式可以嵌套,所以用左括号出现的顺序来代表子表达式的引用顺序。如匹配一对引号可以用/('")[^'"]*\1/
在JS1.5中有一种改进的括号方式(?:xxx),它只有分组的效果,而不会产生引用,/(ab)(?:cde)(fg)\2/中\2对应着(fg)

指定匹配的位置(即锚元素的使用)
^ 字符串的开头,$ 字符串的结尾,\b 为单字的边界, \B 为非单字边界
在JS1.5中,(?=xxx)可以指定一个前向的锚定条件,即字符需要匹配该条件,(?!xxx)指定一个反向的锚定条件,即字符不匹配该条件
如/\bJava\b/匹配一个单字Java,它不会匹配JavaScript

一些转义字符
.  (点号)匹配任意字符
\w  相当于[a-zA-Z0-9_]
\W  相当于[^a-zA-Z0-9_]
\s  任何unicode空白符
\S  任何非unicode空白符
\d  相当于[0-9]
\D  相当于[^0-9]
[\b] 退格直接量

分享到:
评论

相关推荐

    【案例】某企业人力资源盘点知识.docx

    【案例】某企业人力资源盘点知识.docx

    AUTOSAR-SWS-SAEJ1939NetworkManagement.pdf

    AUTOSAR_SWS_SAEJ1939NetworkManagement.pdf

    基于java的毕业生离校管理系统源码.zip

    提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。

    onnxruntime-1.16.0-cp310-cp310-linux_armv7l.whl.zip

    onnxruntime-1.16.0-cp310-cp310-linux_armv7l.whl.zip

    某二层小型独栋别墅建筑施工图立面.dwg

    某二层小型独栋别墅建筑施工图立面.dwg

    Java毕业设计-ssm基于移动端的选课系统的设计与实现演示录像(高分期末大作业).rar

    Java毕业设计-ssm基于移动端的选课系统的设计与实现演示录像(高分期末大作业)

    Java毕业设计-疫情防控演示0307-224719(高分期末大作业).zip

    此资源为完整项目部署后演示效果视频,可参考后再做项目课程决定。 包含:项目源码、数据库脚本、项目说明等,有论文参考,该项目可以直接作为毕设使用。 技术实现: ​后台框架:SpringBoot框架 或 SSM框架 ​数据库:MySQL 开发环境:JDK、IDEA、Tomcat 项目都经过严格调试,确保可以运行! 博主可有偿提供毕设相关的技术支持 如果您的开发基础不错,可以在此代码基础之上做改动以实现更多功能。 其他框架项目设计成品不多,请根据情况选择,致力于计算机专业毕设项目研究开发。

    onnxruntime-1.5.3-cp38-cp38-linux_armv7l.whl.zip

    onnxruntime-1.5.3-cp38-cp38-linux_armv7l.whl.zip

    AUTOSAR-EXP-LayeredSoftwareArchitecture.pdf

    AUTOSAR_EXP_LayeredSoftwareArchitecture.pdf

    onnxruntime-1.2.0-cp38-cp38-linux_armv7l.whl.zip

    onnxruntime-1.2.0-cp38-cp38-linux_armv7l.whl.zip

    月夜行舟是一首中国古代诗歌.docx

    "月夜行舟"是一首中国古代诗歌,由唐代诗人张若虚创作。这首诗表现了诗人在月光下乘船游湖的情景,通过描绘自然景色和表达内心情感,展现了诗人对自然、生命和人生的感悟。以下是对这首诗的详细介绍: 诗歌原文 月明星稀,乌鹊南飞。 绕树三匝,何枝可依? 山峦倒碎风前浪,一片孤城万仞山。 羌笛何须怨楼台,春风不度玉门关。 解读 月明星稀: 诗歌开篇即描绘了明亮的月光和繁星点点的夜空,为整首诗营造出安静、幽远的氛围。 乌鹊南飞: 乌鹊南飞是秋天的标志,也象征着季节的变迁和时光的流逝。 绕树三匝,何枝可依: 诗人在此描绘了乌鸦盘旋于树上的景象,表现了孤寂和迷茫之情。 山峦倒碎风前浪,一片孤城万仞山: 这两句表现了山峦起伏、波涛汹涌的景象,将自然景色与内心的孤独、无助相结合。 羌笛何须怨楼台,春风不度玉门关: 最后两句表达了诗人对于人生的感悟,提倡超脱世俗和物欲,表现出超然的境界和淡泊的态度。 艺术特点 意境深远: 通过对自然景色的描绘和内心感悟的表达,诗歌营造出了超脱世俗、清新脱俗的意境。 意象鲜明: 诗中的乌鹊、树影、山峦等意象生动鲜明,展现了诗人对自然景色的敏锐观察和抒发。 情感真挚: 诗人在诗

    基于Java的学生成绩管理系统源码.zip

    提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。

    Java毕业设计-ssm基于移动端的校园请假系统的设计与实现演示录像(高分期末大作业).zip

    此资源为完整项目部署后演示效果视频,可参考后再做项目课设决定。 包含:项目源码、数据库脚本、项目说明等,有论文参考,该项目可以直接作为毕设使用。 技术实现: ​后台框架:SpringBoot框架 或 SSM框架 ​数据库:MySQL 开发环境:JDK、IDEA、Tomcat 项目都经过严格调试,确保可以运行! 博主可有偿提供毕设相关的技术支持 如果您的开发基础不错,可以在此代码基础之上做改动以实现更多功能。 其他框架项目设计成品不多,请根据情况选择,致力于计算机专业毕设项目研究开发。

    Java毕业设计-ssm基于Java智能选课系统的设计与实现演示录像(高分期末大作业).zip

    此资源为完整项目部署后演示效果视频,可参考后再做项目课设决定。 包含:项目源码、数据库脚本、项目说明等,有论文参考,该项目可以直接作为毕设使用。 技术实现: ​后台框架:SpringBoot框架 或 SSM框架 ​数据库:MySQL 开发环境:JDK、IDEA、Tomcat 项目都经过严格调试,确保可以运行! 博主可有偿提供毕设相关的技术支持 如果您的开发基础不错,可以在此代码基础之上做改动以实现更多功能。 其他框架项目设计成品不多,请根据情况选择,致力于计算机专业毕设项目研究开发。

    Java毕业设计-ssm家校通小程序演示录像(1)(高分期末大作业).zip

    此资源为完整项目部署后演示效果视频,可参考后再做项目课设决定。 包含:项目源码、数据库脚本、项目说明等,有论文参考,该项目可以直接作为毕设使用。 技术实现: ​后台框架:SpringBoot框架 或 SSM框架 ​数据库:MySQL 开发环境:JDK、IDEA、Tomcat 项目都经过严格调试,确保可以运行! 博主可有偿提供毕设相关的技术支持 如果您的开发基础不错,可以在此代码基础之上做改动以实现更多功能。 其他框架项目设计成品不多,请根据情况选择,致力于计算机专业毕设项目研究开发。

    基于springboot的B2B平台的医疗病历交互系统.zip

    在一个组织里,信息已作为人力、物力、财力之外的第四种资源,占有重要的地位。然而,信息是一种非物质的,有别于基本资源的新形式的资源。信息也是管理的对象,必须进行管理和控制。本基于B2B平台的医疗病历交互系统是将IT技术用于医疗病历信息的管理, 它能够收集与存储学习的档案信息,提供更新与检索学习信息档案的接口;提高工作效率。 本系统是基于JAVA平台开发的一套基于B2B平台的医疗病历交互系统。系统采用Java为编程语言,后台主要采用Spring Boot框架。数据库采用Mysql建立数据之间的转换。论文主要介绍了本课题的开发背景,所要完成的功能和开发的过程。重点的说明了系统设计的重点、设计思想、难点技术和解决方案。 关键词:基于B2B平台的医疗病历交互系统;Spring Boot框架;计算机;信息 管理员角色:医院管理、医院注册、医院文章、医生信息 用户角色:医院注册、医疗安排 医院角色:院区注册、医院公告 医生角色:医院工作人员、病人病历

    B2113 输出亲朋字符串.cpp

    B2113 输出亲朋字符串

    京瓷方式人才培养制度第二部分.docx

    京瓷方式人才培养制度第二部分.docx

    B2023 空格分隔输出.exe

    B2023 空格分隔输出

Global site tag (gtag.js) - Google Analytics