我在读jquery代码的时候, 看到一个正则表达式定义rsingletag = /^(?:)?$/
rsingletag用来匹配简单的html标签,
其中有一段非捕获分组:(?:), 问题来了:
为什么要用非捕获分组, 不用的话又怎么样?
例如这个正则表达式中也用到你非捕获分组:rquickExpr = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/
立即学习“Java免费学习笔记(深入)”;
为什么要用非捕获分组?
在正则表达式的哪个位置用?
十天学会易语言图解教程用图解的方式对易语言的使用方法和操作技巧作了生动、系统的讲解。需要的朋友们可以下载看看吧!全书分十章,分十天讲完。 第一章是介绍易语言的安装,以及运行后的界面。同时介绍一个非常简单的小程序,以帮助用户入门学习。最后介绍编程的输入方法,以及一些初学者会遇到的常见问题。第二章将接触一些具体的问题,如怎样编写一个1+2等于几的程序,并了解变量的概念,变量的有效范围,数据类型等知识。其后,您将跟着本书,编写一个自己的MP3播放器,认识窗口、按钮、编辑框三个常用组件。以认识命令及事件子程序。第
3
我在读jquery代码的时候, 看到一个正则表达式定义rsingletag = /^(?:)?$/
rsingletag用来匹配简单的html标签,
其中有一段非捕获分组:(?:), 问题来了:
为什么要用非捕获分组, 不用的话又怎么样?
例如这个正则表达式中也用到你非捕获分组:rquickExpr = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/
立即学习“Java免费学习笔记(深入)”;
为什么要用非捕获分组?
在正则表达式的哪个位置用?
那就反问下自己非捕获分组是什么,从哪里知道的这个「名词」?
那么问题来了,非捕获性分组是干嘛的?
是你不想被捕获到的分组,在js中,一个小括号包起来的字符就是一个分组。在写正则的时候有时候必须用小括号来对一组同类型的字符进行分组,例如 /(abc){3}/,abc三个字母匹配三次,abc就是同类型的字符。但是在match或者exec或者replace等等方法中并不需要这一组字符,于是就不捕获咯。想一想下面这个需求
有一段字符串,使用 n 个 abcd 加一段其他字符组成的,现在我想要n个abcd后面的字符串怎么写
例如 abcdabcdabcdefg,想要的是 efg
<code class="js">'abcdabcdabcdefg'.match(/(abcd)+(.+)/) => ["abcdabcdabcdefg", "abcd", "efg"] 'abcdabcdabcdefg'.match(/(?:abcd)+(.+)/) => ["abcdabcdabcdefg", "efg"]</code>
不写好像也能获得,但是当你正则写的特别长的时候,会出现一堆没用的结果,看着都头疼吧。
=============
再补句话,你问这些问题的时候,自己把控制台调出来,把加了?:和没加的结果输出一遍不就知道了。
java怎么学习?java怎么入门?java在哪学?java怎么学才快?不用担心,这里为大家提供了java速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号