非捕获性分组:
前面讲了创建反向引用的分组,这种分组一般称为捕获性分组。同时也存在一种非捕获性分组。它不会创建反向引用,因为在比较长的正则表达式中,分组多了会很影响效率。所以使用非捕获性分组。
创建非捕获性分组是这样的(?:开始然后写表达式。例如
var str = "#123231312";
var patt = /#(?:\d)/
console.log(patt.test(str));
console.log(RegExp["$1"]);
得到结果为:
true
(an empty string)
可以看到满足了我们的要求没有分组。
前瞻:
有时候我们需要某个特定的字符串分组出现在特定的字符串之前才捕获它,这种就是前瞻了。前瞻创建为:(正则表达式捕获的字符串(?=特定字符串))。看实例:
var str = "bedroom";
var str2 = "beded";
var patt = /(bed(?=room))/
console.log(patt.test(str));
console.log(RegExp["$1"]);
console.log(patt.test(str2));
得到结果:
true
bed
false
上面是正向前瞻。看负向前瞻:
(正则表达式捕获的字符串(?!特定字符串))
var str = "bedroom";
var str2 = "beded";
var patt = /(bed(?!room))/
console.log(patt.test(str));
console.log(RegExp["$1"]);
console.log(patt.test(str2));
得到结果:
参考《javascript高级程序设计》
分享到:
相关推荐
在正则表达式中,有捕获性分组和非捕获性分组的概念。 捕获性分组是正则表达式中的一个基础概念,使用圆括号()对正则表达式模式的某部分进行分组,这样可以记住这个分组匹配的内容,以便后续可以被引用。例如,在...
本文详细介绍了JavaScript正则表达式中的分组与前瞻匹配,分组匹配包括捕获性分组和非捕获性分组,而前瞻匹配则分为正向前瞻和反向前瞻。在实际应用中,合理使用分组与前瞻可以极大提升处理字符串的效率和精确度,...
6. **非捕获性分组.html**:非捕获性分组 `(?:...)` 允许我们在正则表达式中创建子模式,但不将其作为捕获组,这样可以提高效率,减少捕获组的数量。 7. **候选.html**:在正则表达式中,`|`是“或”操作符,表示...
如果希望将日期格式从“12.21/2012”转换为“2012-12-21”,可以使用正则表达式进行分组和捕获,然后在replace方法中通过$1, $2等来引用这些捕获的组,并将它们按照新的格式进行拼接。 此外,分组匹配还可以用于...
4. **非捕获性分组**:有时我们只关心整个模式是否匹配,而不关心分组内的具体匹配。这时可以使用非捕获性分组`(?:...)`,这样可以避免不必要的内存消耗。 5. **前瞻与后瞻**:前瞻(lookahead)和后瞻(lookbehind...
在正则表达式中,括号主要有分组和分支结构的作用。分组可以将一组字符作为一个单元进行处理,同时捕获匹配的内容。分支结构允许在一组中进行多选匹配,使用“|”操作符。分组引用可用于提取数据或进行替换操作,...
在实际应用中,理解正则表达式的预查(前瞻断言)、后顾断言、分组和反向引用等功能也是至关重要的。预查如`(?!pattern)`,表示后续不应该是`pattern`;后顾断言如`(?)`,表示前面应该有`pattern`。分组使用圆括号`...
正则表达式的主要用途包括数据有效性验证和查找与替换。通过元字符和操作符的组合,可以构建出复杂模式来匹配不同的字符串。元字符在正则表达式中具有特殊含义,例如`\`用于转义,`^`匹配字符串开头,`$`匹配字符串...
:)创建非捕获组,不影响整体的计数,但可以用于分组。 2. 后向引用:在正则表达式中使用\\数字来引用前面相同序号的捕获组。 3. 预查:如(?=...)和(?!...),分别表示正向前瞻和负向前瞻,检查后面的模式是否匹配,但...
7. **预定义字符类**:JavaScript提供了一些预定义字符类,如`\d`(数字),`\D`(非数字),`\s`(空白字符),`\S`(非空白字符),`\w`(字母、数字或下划线),`\W`(非字母、数字或下划线)。 8. **否定前瞻...
JavaScript是一种广泛应用于网页和网络应用的脚本语言,主要负责客户端的交互逻辑和数据验证。在JavaScript中,正则表达式(Regular Expression)是处理文本的强大工具,常用于验证用户输入、提取信息或进行字符串...
此外,还会讲解如何使用分组和捕获,以及非捕获组来组织正则表达式。 接着,书中会深入讨论高级特性,如预查(`(?=...)`和`(?!...)`)、正向后顾前瞻(`(?)`和`(?<!...)`)和零宽断言,这些都是正则表达式中的高级...
6. **分组与捕获**:使用圆括号 `(pattern)` 创建一个捕获组,可以捕获匹配的子字符串。在替换操作中,可以使用 `\1`、`\2` 等引用这些捕获组。 7. **非捕获组**:`(?:pattern)` 创建一个非捕获组,它不被捕获,...
PPT可能还会讨论高级特性,如分组(使用括号`()`创建捕获组)、非捕获组(`(?:...)`)、零宽度断言(如`^`表示行首,`$`表示行尾,`\b`表示单词边界,`(?=...)`和`(?!...)`用于前瞻和后瞻断言)以及正向和反向引用。...
8. **JavaScript中的捕获组与非捕获组** - `(pattern)` 是捕获组,会被`exec()`或`match()`记住。 - `(?:pattern)` 是非捕获组,不会被记住,仅用于分组目的。 9. **正则表达式的局限性** - JavaScript 的正则...
JavaScript正则表达式是编程语言中的一个重要组成部分,用于处理文本模式匹配和字符串操作。这篇博客“javascript正则表达式综合练习”可能是一个实践教程或示例集合,旨在帮助开发者提升在JavaScript中使用正则...