分组、引用、前向声明和后向声明

可以通过括号来对正则表达式进行分组,分组的正则表达式模式有两个作用,一是可以让重复模式作用于整个组而不是单一字符,另一个是可以用特殊转义序列来对其进行引用

在介绍分组之前,有必要先介绍下match()方法,我们会在下面用到。match()方法的唯一一个参数是正则表达式,它的行为取决于这个正则表达式的标志,如果该正则表达式包含了标志g,它的返回值就是包含了出现在字符串中的所有匹配的数组。如果该正则表达式不包含标志g,它也返回一个数组,它的第一个元素是匹配的字符串,余下的元素则是正则表达式中的各个分组。注意如果没的任何匹配,则返回null。示例:
不带标志g JavaScript:alert("JavaScript is not Java".match(/([Jj]ava)(Script)?/));
带标志g JavaScript:alert("JavaScript is not Java".match(/([Jj]ava)(Script)?/g));

(pattern) 匹配pattern并获取这一匹配。所获取的匹配可以从产生的Matches集合得到,在JavaScript中可以使用$0……$9属性获取。示例:JavaScript:alert("JavaScript is not Java".match(/([Jj]ava)(Script)?/));

(?:pattern) 匹配 pattern 但不获取匹配结果,也就是说这是一个非获取匹配,不进行存储供以后使用。这在使用 "或" 字符 (|) 来组合一个模式的各个部分是很有用。例如, 'industr(?:y|ies) 就是一个比 'industry|industries' 更简略的表达式。示例:JavaScript:alert("JavaScript is not Java".match(/([Jj]ava)(?:Script)?/)); 注意和上面的运行结果比较。

(?=pattern)前向声明,非获取匹配,指定前面匹配的字符必须在接下来的表达式的位置之前(但是表达式并不匹配接下来的表达式)。例如, 'Windows (?=95|98|NT|2000)' 能匹配 "Windows 2000" 中的 "Windows" ,但不能匹配 "Windows 3.1" 中的 "Windows"。示例:JavaScript:alert(/[Ji]ava[Ss]cript(?=\:) /.test("JavaScript:alert(0)") JavaScript:alert(/[Ji]ava[Ss]cript(?=\:)/.test("JavaScript is fun")

(?!pattern)反前向声明,非获取匹配,含义与前向声明相反。例如'Windows (?!95|98|NT|2000)' 能匹配 "Windows 3.1" 中的 "Windows",但不能匹配 "Windows 2000" 中的 "Windows"。示例:JavaScript:alert(/[Ji]ava[Ss]cript(?!\:) /.test("JavaScript:alert(0)") JavaScript:alert(/[Ji]ava[Ss]cript(?!\:)/.test("JavaScript is fun") 可以看出运行结果和上面的前向声明正好相反
300*300
  • 没有相关文章
  • 没有评论
 文章首页关于迷茫时代关于我写意人生
版权所有:迷茫时代 All rights reserved   
执行时间:0.00452 秒