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] 退格直接量
分享到:
相关推荐
JavaScript 正则表达式详解 JavaScript 中的正则表达式是指使用特殊字符来描述字符串模式的表达式。正则表达式可以用来匹配、检索和操作字符串。 RegExp 对象 在 JavaScript 中,正则表达式可以被定义为一个 ...
在JavaScript中,正则表达式以斜杠“/”包围的形式出现,例如`/pattern/flags`。在处理HTML文档时,经常会遇到需要从HTML代码中提取特定信息的情况,比如从一段字符串中匹配`<div>`和`<style>`标签。 在进行正则...
本文将深入探讨如何结合JavaScript和正则式来实现表单参数的校验,确保用户输入的数据符合预期格式。 一、JavaScript表单基础 在HTML中,表单元素(如`<input>`、`<select>`、`<textarea>`等)用于收集用户输入。...
正则式,全称为“正则表达式”,是编程领域中一种强大的文本处理工具,用于匹配、查找、替换和分析字符串。它通过一系列特定的字符和语法构建模式,可以高效地处理各种复杂的文本匹配任务。在软件开发、数据处理、...
JavaScript正则表达式是编程语言JavaScript中的一个重要组成部分,它用于处理文本字符串,执行模式匹配、查找、替换等操作。在JavaScript中,正则表达式是一种强大的工具,可以帮助开发者高效地处理字符串数据。以下...
标题《JS与正则式强化训练作业.pdf》暗示了文档是一份针对JavaScript和正则表达式应用的实践练习题。通过提供的部分内容,可以推断出这些练习题旨在加强学习者在使用JavaScript编写正则表达式的能力。 描述中没有...
在编程语言中,如JavaScript,正则式被广泛应用于字符串处理,包括验证输入、提取信息、替换文本等场景。以下是对正则式及其在JavaScript中的应用的详细解释。 一、正则式的目的 正则式的主要目的是验证一个字符串...
Java正则表达式与JavaScript的正则表达式并不完全相同,尽管它们在很多方面有相似之处。Java正则表达式提供了高效和简洁的方式来处理复杂的字符串操作,例如验证电子邮件地址。相比于传统的编程方法,使用正则表达式...
在JavaScript中,正则表达式(Regular Expressions)是一种强大的工具,用于文本处理、搜索、替换等操作。本文将深入探讨几种在JavaScript中常见的正则表达式应用,这些技巧不仅适用于日常开发,也是提高代码效率和...
JavaScript 和正则表达式是Web开发中的两个重要概念,它们在构建交互式和动态网页时起着关键作用。正则表达式(Regular Expression)是一种强大的文本处理工具,用于模式匹配和字符串操作,而JavaScript作为浏览器...
正则表达式工具,如提供的"正则表示式工具.exe",是专门用来测试和调试正则表达式的软件。这类工具通常有以下特点: 1. **实时匹配**:输入正则表达式和测试字符串,立即显示匹配结果。 2. **高亮显示**:高亮匹配...
以下是一些常用的正则式及其详细解释: 1. **基本字符匹配** - `. (点号)`: 匹配任意单个非换行符字符。 - `*`: 重复前面的字符0次或无限次。 - `+`: 重复前面的字符1次或无限次。 - `?`: 重复前面的字符0次或1...
正则式(Regular Expression)是计算机科学中用于匹配字符串的强大工具,广泛应用于数据验证、文本搜索和替换等场景。在IT行业中,掌握正则式的使用是程序员和IT专业人员必备的技能之一。RegexTools和RegexBuddy是两...
在IT领域,JavaScript、CSS和正则表达式是构建网页和Web应用不可或缺的三大核心技术。这份"javascript+css+正则表达式"的chm帮助文档集合,为初学者提供了全面的学习资源,涵盖了这些主题的基础知识和进阶技巧。 ...
正则式工具是一种强大的文本处理工具,它使用正则表达式来匹配、查找、替换或提取文本中的模式。正则表达式(Regular Expression)是一种特殊的字符序列,可以用来描述一个字符串集,常用于数据验证、搜索和替换操作...
- 应用正则:将生成的正则表达式应用到实际代码中,如JavaScript、Python、Java等语言。 4. 文件解析: - "下载说明.htm":这可能是一个包含软件下载指南和使用教程的HTML文件,用户可以通过阅读了解如何下载和...
"正则表达式.chm"可能详细讲解了正则表达式的语法、特殊字符、元字符、量词、分组、零宽断言等核心概念,以及如何在JavaScript中使用正则表达式进行匹配和替换操作。 这些CHM文件是学习Web开发的宝贵资源,通过它们...
### JS正则表达式验证知识点解析 #### 一、去除字符串两端及中间的空白字符 在JavaScript中,去除字符串中的空白字符是一项常见的需求。这里提供了几种去除不同位置空白字符的方法。 1. **去除左侧空白字符**: ...
RegexApplication/Default.aspx 正则表达式类的应用 RegexApplication/GetPageHtmlData.aspx 获取网页的内容 第10章(/10/) ASPNETValidator/Compare.aspx 比较验证 ASPNETValidator/...
在调试和测试正则表达式时,可以使用在线的正则表达式测试工具,比如JavaScript正则表达式测试工具,它们可以帮助我们直观地看到匹配结果,方便调整和优化正则表达式。 总之,JavaScript的正规式是一个强大且灵活的...