快乐的JS正则表达式(二)
在上一篇中介绍了一个test方法,在本文中将使用另外一个,exec方法可以找到匹配的结果并且返回结果以及位置。exec("正则");
简单测试:
var str = "{追梦子}";
var reg = /追梦子/;
console.log(reg.exec(str)); //["追梦子", index: 1, input: "{追梦子}"]
exec返回的是一个数组,第一位是匹配到的内容,第二位是匹配到的内容第一位置的索引,索引从0开始的。
另外如果需要匹配一段文本,并且把某一个字提取出来可以给需要提取出来的子加括号。
var str = "{追梦子}";
var reg = /追(梦)子/;
console.log(reg.exec(str)); //["追梦子", "梦", index: 1, input: "{追梦子}"]
也有人叫它分组,更多exec的用途会在后面的几节中详细讲到,因为我们需要更多的知识来扩充我们的大脑。
.字符可以用来匹配任意的一个字符串。
var str = "#f3f3f3";
var reg = /./;
console.log(reg.exec(str)); //["#", index: 0, input: "#f3f3f3"]
小任务:我们需要匹配var str = "json.js";这段文本,并且.js前面可以是任意的内容,温馨提示+可以匹配任何包含至少一个n的字符串。
var str = "json.js";
var reg = /.+\.js/;
console.log(reg.exec(str)); //["json.js", index: 0, input: "json.js"]
如果使用了正则表达式中的特殊字符最好前面加\进行转译。所谓特殊字符就是某个字符在正则中有特殊的含义,比如+、. 、*、?等。
假如我们想提取.js前面的字符可以这样做。
var str = "json.js";
var reg = /(.+)\.js/;
console.log(reg.exec(str)); //index.js:3 ["json.js", "json", index: 0, input: "json.js"]
回想一下我们前面说的分组,当然我们也可以使用多个分组。
var str = "json.js";
var reg = /(.+)\.(js)/;
console.log(reg.exec(str)); //["json.js", "json", "js", index: 0, input: "json.js"]
至于这有什么用后面会讲的,不用着急。
^表示这个字符后面的那个字符必须出现在开始的位置。
var str = "wjson.js";
var reg = /^j.+\.(js)/;
console.log(reg.exec(str)); //null
因为j并不在开始的位置
var str = "json.js";
var reg = /^j.+\.(js)/;
console.log(reg.exec(str)); //["json.js", "js", index: 0, input: "json.js"]
^还有另外一个用途,如果在[]中使用^那么^表示的就是取非。
var str = "jQuery.js";
var reg = /j[^a-z][a-z]*.js/;
console.log(reg.exec(str)); //["jQuery.js", index: 0, input: "jQuery.js"]
[^a-z]表示除了小写a-z以外的任意字符,另外这段代码还使用了*号,*号表示匹配前面一个字符零次或者多次。在这里就是匹配[a-z]中的任意一个字符0次或多次。
本节完。
快乐的JS正则表达式(二)的更多相关文章
- 快乐的JS正则表达式(一)
上一篇介绍了为什么需要正则,那从这一篇开始我们就去学习如何使用正则. 在js中有两种方式创建正则表达式: var reg = new RegExp("表达式","可选规则 ...
- 快乐的JS正则表达式(三)
?的用途. 小任务:匹配一段网址如var str = "http://www.123.com/";注意http也可以是https var str = "http://i. ...
- 快乐的JS正则表达式(开篇)
我不喜欢一开始就去讨论某某有多强大,因为我觉得那样没意思,首先我们的知道它是干什么,对我们有啥用,再去讨论它的强大之处也不迟.那和往常一样我们先来看几个例子. var arr = [1,4,2,5,2 ...
- JS正则表达式常用总结
正则表达式的创建 JS正则表达式的创建有两种方式: new RegExp() 和 直接字面量. //使用RegExp对象创建 var regObj = new RegExp("(^\\s+) ...
- Python之路-(js正则表达式、前端页面的模板套用、Django基础)
js正则表达式 前端页面的模板套用 Django基础 js正则表达式: 1.定义正则表达式 /.../ 用于定义正则表达式 /.../g 表示全局匹配 /.../i 表示不区分大小写 /.../m ...
- JS正则表达式大全
转自:http://wenku.baidu.com/link?url=3y930kC7F6D3wQdMjQ3fVDmiA9Wfebs_QK0UB3N3mFaEoKg4ytZORPopxufeYA6si ...
- JS正则表达式大全(整理详细且实用)
JS正则表达式大全(整理详细且实用).需要的朋友可以过来参考下,希望对大家有所帮助!! 正则表达式中的特殊字符 字符 含意 \ 做为转意,即通常在"\"后面的字符不按原来意义解释, ...
- Jquery Easyui验证扩展,Easyui验证,Easyui校验,js正则表达式
Jquery Easyui验证扩展,Easyui验证,Easyui校验,js正则表达式 >>>>>>>>>>>>>> ...
- JS 正则表达式否定匹配(正向前瞻)
引言:JS 正则表达式是 JS 学习过程中的一大难点,繁杂的匹配模式足以让人头大,不过其复杂性和其学习难度也赋予了它强大的功能.文章从 JS 正则表达式的正向前瞻说起,实现否定匹配的案例.本文适合有一 ...
随机推荐
- bind() live()和delegate 区别
Event bubbling (aka event propagation)冒泡 我们的页面可以理解为一棵DOM树,当我们在叶子结点上做什么事情的时候(如click一个a元素),如果我们不人为的设置s ...
- AndroidStudio的一些坑
以下环境为Android Studio 1.3.2,Gradle 2.7(as自带2.4,另下载的2.7) 编译时提示Multiple dex files define: Lcom/sina/weib ...
- Log4cpp介绍及使用
Log4cpp是一个开源的C++类库,它提供了在C++程序中使用日志和跟踪调试的功能.使用log4cpp,可以很便利地将日志或者跟踪调试信息写入字符流.内存字符串队列.文件.回滚文件.调试器.Wind ...
- 于网站主机,DNS,域名解析,Web服务器关系详解
/*本文将介绍网站主机,DNS,域名解析,Web服务器关系,转载请保留以下版权*/ /*启明星工作室 www.dotnetcms.org 提供会议室预定系统,请假系统,helpdesk,工作日志系统 ...
- Visual Studio 2013 无法正常打开项目文件
提示:无法打开 vcxproj 因为此版本的应用程序不支持其项目类型 ,若要打开它 请使用支持此类型项目的版本. 检查 AppData\Roaming\Microsoft\VisualStudio\ ...
- 转:主流数据恢复软件——EasyRecovery/Ashampoo Undeleter/Wise Data Recovery/Recuva/Undelete 360
转自:Baidu 空间 2012-10-05 13:57 主流数据恢复软件——EasyRecovery/Ashampoo Undeleter/Wise Data Recovery/Recuva/Und ...
- MongoDB图形化管理工具
NoSQL的运动不止,MongoDB 作为其中的主力军发展迅猛,也带起了一股开发图形化工具的风潮:气死反过来说,看一个产品是否得到认可,可以侧面看其第三方工具的数量和成熟程度:简单的收集了MongoD ...
- webRTC-实时流媒体的福音
WebRTC是一项在浏览器内部进行实时视频和音频通信的技术,是谷歌2010年以6820万美元收购Global IP Solutions公司而获得的一项技术.[1] WebRTC实现了基于网页的视频会议 ...
- 小兔的棋盘(hdu2067)
小兔的棋盘 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Subm ...
- 定时5秒之后驻留在元素ID为content元素的内容
如果我只能刷新一个特定的页面的一部分,这将是很大的,例如:仪表盘上的交通灯显示系统状态. 这是很容易通过使用jQuery JavaScript库,只刷新页面的一部分.一旦我们纳入我们的页面的jQuer ...