加入收藏 | 设为首页 | 会员中心 | 我要投稿 宿州站长网 (https://www.0557zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 教程 > 正文

js正则表达式含义

发布时间:2022-04-29 12:51:34 所属栏目:教程 来源:互联网
导读:js正则表达式中有很多特殊的字符可能有些人并不知道是什么含义,下面我们就来具体介绍一下。 js正则表达式字符 含意 做为转意,即通常在后面的字符不按原来意义解释,如/b/匹配字符b,当b前面加了反斜杆后/b/,转意为匹配一个单词的边界。 -或- 对正则表

 
  /s+javas+/ //匹配字符串"java" ,并且该串前后可以有一个或多个空格.
 
  /[^"] * / //匹配零个或多个非引号字符.
 
  正则表达式的复制字符
 
  字符 含义
 
  {n, m} 匹配前一项至少n次,但是不能超过m次
 
  {n, } 匹配前一项n次,或者多次
 
  {n} 匹配前一项恰好n次
 
  ? 匹配前一项0次或1次,也就是说前一项是可选的. 等价于 {0, 1}
 
  + 匹配前一项1次或多次,等价于{1,}
 
  * 匹配前一项0次或多次.等价于{0,}
 
        4.选择,分组和引用
 
  正则表达式的语法还包括指定选择项,对子表达式分组和引用前一子表达式的特殊字符.字符| 用于分隔供选择的字符.例如: /ab|cd|ef/ 匹配的是字符串 "ab",或者是字符串 "cd",又或者 "ef". /d{3}|[a-z]{4}/ 匹配的是要么是一个三位数,要么是四个小写字母.在正则表达式中括号具有几种作用.它的主要作用是把单独的项目分组成子表达式,以便可以像处理一个独立的单元那种用 *、+或? 来处理那些项目.例如: /java(script) ?/ 匹配的是字符串 "java",其后既可以有 "script",也可以没有. /
 
  (ab|cd) + |ef) / 匹配的既可以是字符串 "ef",也可以是字符串"ab" 或者 "cd" 的一次或多次重复.
 
  在正则表达式中,括号的第二个用途是在完整的模式中定义子模式。当一个正则表达式成功地和目标字符串相匹配时,可以从目标串中抽出和括号中的子模式相匹配的部分.例如,假定我们正在检索的模式是一个或多个字母后面跟随一位或多位数字,那么我们可以使用模式 / [a-z] + d+/.但是由于假定我们真正关心的是每个匹配尾部的数字,那么如果我们将模式的数字部分放在括号中 (/ [a-z] + (d+)/) ,我们就可以从所检索到的任何匹配中抽取数字了,之后我们会对此进行解析的.
 
  代括号的子表达式的另一个用途是,允许我们在同一正则表达式的后面引用前面的子表达式.这是通过在字符串 后加一位或多位数字来实现的.数字指的是代括号的子表达式在正则表达式中的位置.例如: 1 引用的是第一个代括号的子表达式. 3 引用的是第三个代括号的子表达式.注意,由于子表达式可以嵌套在其它子表达式中,
 
  所以它的位置是被计数的左括号的位置.
 
  例如:在下面的正则表达式被指定为 2:
 
  /([Jj]ava([Ss]cript)) sis s (funw*) /
 
  对正则表达式中前一子表达式的引用所指定的并不是那个子表达式的模式,而是与那个模式相匹配的文本.这样,引用就不只是帮助你输入正则表达式的重复部分的快
 
  捷方式了,它还实施了一条规约,那就是一个字符串各个分离的部分包含的是完全相同的字符.例如:下面的正则表达式匹配的就是位于单引号或双引号之内的所有字符.但是,它要求开始和结束的引号匹配(例如两个都是双引号或者都是单引号):
 
  /[' "] [^ ' "]*[' "]/
 
  如果要求开始和结束的引号匹配,我们可以使用如下的引用:
 
  /( [' "] ) [^ ' "] * 1/
 
  1匹配的是第一个代括号的子表达式所匹配的模式.在这个例子中,它实施了一种规约,那就是开始的引号必须和结束的引号相匹配.注意,如果反斜杠后跟随的数字比代括号的子表达式数多,那么它就会被解析为一个十进制的转义序列,而不是一个引用.你可以坚持使用完整的三个字符来表示转义序列,这们就可以避免混淆了.例如, 使用 44,而不是44.下面是正则表达式的选择、分组和引用字符:
 
  字符 含义
 
  | 选择.匹配的要么是该符号左边的子表达式,要么它右边的子表达式
 
  (...) 分组.将几个项目分为一个单元.这个单元可由 *、+、?和|等符号使用,而且还可以记住和这个组匹配的字符以供此后引
 
  用使用
 
  n 和第n个分组所匹配的字符相匹配.分组是括号中的子表达式(可能是嵌套的).分组号是从左到右计数的左括号数
 
5.指定匹配的位置
 
  我们已经看到了,一个正则表达式中的许多元素才能够匹配字符串的一个字符.例如: s 匹配的只是一个空白符.还有一些正则表达式的元素匹配的是字符之间宽度为0的空间,而不是实际的字符例如: b 匹配的是一个词语的边界,也就是处于一个/w字字符和一个w非字字符之间的边界.像b 这样的字符并不指定任何一个匹配了的字符串中的字符,它们指定的是匹配所发生的合法位置.有时我们称这些元素为正则表达式的锚.因为它们将模式定位在检索字符串中的一个特定位置.最常用的锚元素是 ^, 它使模式依赖于字符串的开头,而锚元素$则使模式定位在字符串的末尾.
 
  例如:要匹配词 "javascript" ,我们可以使用正则表达式 /^ javascript $/. 如果我们想检索 "java" 这个词自身 (不像在 "javascript" 中那样作为前缀),那么我们可以使用模式 /s java s /, 它要求在词语java之前和之后都有空格.但是这样作有两个问题.第一: 如果 "java" 出现在一个字符的开头或者是结尾.该模式就不会与之匹配,除非在开头和结尾处有一个空格. 第二: 当这个模式找到一个与之匹配的字符时,它返回的匹配的字符串前端和后端都有空格,这并不是我们想要的.因此,我们使用词语的边界 b 来代替真正的空格符 s 进行匹配. 结果表达式是 /b java b/.
 
  下面是正则表达式的锚字符:
 
  字符 含义
 
  ^ 匹配的是字符的开头,在多行检索中,匹配的是一行的开头
 
  $ 匹配的是字符的结尾,在多行检索中,匹配的是一行的结尾
 
  b 匹配的是一个词语的边界.简而言之就是位于字符w 和 w之间的位置(注意:[b]匹配的是退格符)
 
  B 匹配的是非词语的边界的字符
 
        6.属性
 
  有关正则表达式的语法还有最后一个元素,那就是正则表达式的属性,它说明的是高级模式匹配的规则.和其它正则表达式语法不同,属性是在 / 符号之外说明的.即它们不出现在两个斜杠之间,而是位于第二个斜杠之后.javascript 1.2支持两个属性.属性 i 说明模式匹配应该是大小写不敏感的.属性 g 说明模式匹配应该是全局的.也
 
  就是说,应该找出被检索的字符串中所有的匹配.这两种属性联合起来就可以执行一个全局的,大小写不敏感的匹配.
 
  例如: 要执行一个大小不敏感的检索以找到词语 "java" (或者是 "java" 、"JAVA"等) 的第一个具体值,我们可以使用大小不敏感的正则表达式 /b javab/i .如果要在一个字符串中找到 "java" 所有的具体值,我们还可以添加属性 g, 即 /b java b/gi .
 
  以下是正则表达式的属性:
 
  字符 含义
 
  i 执行大小写不敏感的匹配
 
  g 执行一个全局的匹配,简而言之,就是找到所有的匹配,而不是在找到第一个之后就停止了
 
  除属性 g 和 i 之外,正则表达式就没有其它像属性一样的特性了.如果将构造函数 RegExp 的静态属性 multiline 设置为 true ,那么模式匹配将以多行的模式进行.在这种模式下,锚字符 ^ 和 $ 匹配的不只是检索字符串的开头和结尾,还匹配检索字符串内部的一行的开头和结尾.

(编辑:宿州站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

推荐文章