初探JS正则表达式
var patern = /java/ig; //文本模式
var patern = new RegExp(/java/, 'ig'); //对象模式
注:ES3中RegExp共用一个对象,ES5每次调用产生一个新对象
| 字符 | 匹配 | 
| 字母和数字 | 自身 | 
| \o | NUL字符(\u0000) | 
| \t | 制表符(\u0009) | 
| \n | 换行符(\u000A) | 
| \v | 垂直制表符(\u000B) | 
| \f | 换页符(\u000C) | 
| \r | 回车符(\u000D) | 
| \xnn | 十六进制数,nn指拉丁字符 | 
| \uxxxxx | 十六进制数,xxxx指unicode字符 | 
| \cX | 控制字符^X | 
2.2字符类
| 字符 | 匹配 | 
| [...] | 方括号内的任意字符 | 
| [^...] | 除方括号外的任意字符 | 
| . | 除换行符和其他unicode行终止符外的任意字符 | 
| \w | 任何ASCII字符组成的单词,等价于[a-zA-Z0-9] | 
| \W | 非ASCII字符组成的单词,等价于[^a-zA-Z0-9] | 
| \s | 任何unicode空白符 | 
| \S | 任何非unicode空白符 | 
| \d | 任何ASCII数字,等价于[0-9] | 
| \D | 非ASCII数字,等价于[^0-9] | 
| [\b] | 退格直接量 | 
2.3重复
| 字符 | 含义 | 
| {n,m} | 匹配前一项,至少n次,不超过m次,[n,m) | 
| {n,} | 匹配前一项,至少n次或者更多次,[n,无穷) | 
| {n} | 匹配前一项n次,==n | 
| ? | 匹配前一项,0到1次,0||1 | 
| + | 匹配前一项,1到多次,[1,无穷) | 
| * | 匹配前一项,0次到多次,[0,无穷) | 
备注:非贪婪的重复,只需要在重复后面加一个?即可,目标是尽可能少的匹配。
    2.4选择、分组和引用字符
| 字符 | 含义 | 
| | | 选择,匹配左边或者右边的表达式 | 
| (...) | 分组,可使用重复符进行修饰(记忆) | 
| (?:...) | 只组合,不记忆 | 
| \n | 和第n组,第一次匹配的字符相匹配 | 
2.5指定匹配位置,即锚字符
| 字符 | 含义 | 
| ^ | 匹配字符串的开头 | 
| $ | 匹配字符串的结尾 | 
| \b | 匹配单词的边界符 | 
| \B | 匹配单词非边界符 | 
| (?=p) | 正向先行断言,都与p匹配但不包含 | 
| (?!p) | 负向先行断言,都与p不匹配 | 
2.6修饰符
| 字符 | 含义 | 
| i | 不区分大小写 | 
| m | 多行匹配模式 | 
| g | 全局匹配 | 
3.用于模式匹配的方法,包含String和RegExp对象
| 方法名称 | 使用说明 | 
| String.search(patern) | 返回第一个与之匹配的子串起始位置,如果找不到就返回-1 | 
| String.replace(patern, newStr) | 将匹配的字符串替换成newStr,newStr也可以是动态替换字符串的函数 | 
| String.match(patern) | 返回一个有匹配结果组成的数组,如果非全局匹配,第一个是匹配的字符串,后面为分组值 | 
| String.split(partern) | 根据规则分割成数组 | 
3.2RegExp提供两个方法
| 方法名称 | 使用说明 | 
| RegExp.exec(string) | 和String的match方法返回值相同,RegExp.lastIndex是全局匹配的下一个匹配项的起始位置 | 
| RegExp.test(string) | 当exec不为null时,返回true | 
//获取URL参数
var url = "http://www.cnblogs.com?func=window.getUserName&errno=0";
var splitUrlReg = /\?(\w+)=([^&=]*)(?:&(\w+)=([^&=]*))+/;;
var paramArr = url.match(splitUrlReg);
console.log(paramArr);
//["?func=window.getUserName&errno=0", "func", "window.getUserName", "errno", "0", index: 22, input: "http://www.cnblogs.com?func=window.getUserName&errno=0", clone: function]
初探JS正则表达式的更多相关文章
- JS正则表达式常用总结
		正则表达式的创建 JS正则表达式的创建有两种方式: new RegExp() 和 直接字面量. //使用RegExp对象创建 var regObj = new RegExp("(^\\s+) ... 
- 从273二手车的M站点初探js模块化编程
		前言 这几天在看273M站点时被他们的页面交互方式所吸引,他们的首页是采用三次加载+分页的方式.也就说分为大分页和小分页两种交互.大分页就是通过分页按钮来操作,小分页是通过下拉(向下滑动)时异步加载数 ... 
- 使用外部web组件-----easyUI、jQueryUI、Bootstrap、js正则表达式
		1.使用外部web组件,以Bootstrap为例 <head> <link rel='stylesheet' href='bootstrap-3.3.0-dist/dist/css ... 
- js正则表达式图形化工具-rline
		github地址:https://github.com/finance-sh/rline 在线demo: http://lihuazhai.com/demo/test.html 这是一个js正则表达式 ... 
- Python之路-(js正则表达式、前端页面的模板套用、Django基础)
		js正则表达式 前端页面的模板套用 Django基础 js正则表达式: 1.定义正则表达式 /.../ 用于定义正则表达式 /.../g 表示全局匹配 /.../i 表示不区分大小写 /.../m ... 
- JS正则表达式大全
		转自:http://wenku.baidu.com/link?url=3y930kC7F6D3wQdMjQ3fVDmiA9Wfebs_QK0UB3N3mFaEoKg4ytZORPopxufeYA6si ... 
- js正则表达式replace里有变量的解决方法用到RegExp类
		一直比较害怕使用正则表达式,貌似很深奥很复杂的样子,所以在用js操作字符串的时候,我最多使用的是replace.split.substring.indexOf等函数,这些函数有时候需要多次叠加使用,但 ... 
- JS正则表达式验证账号、手机号、电话和邮箱
		JS正则表达式验证账号.手机号.电话和邮箱 效果体验:http://keleyi.com/keleyi/phtml/jstexiao/15.htm 验证帐号是否合法 验证规则:字母.数字.下划线组成, ... 
- 初识JS正则表达式
		初识JS正则表达式 看到的使用的正则表达式练习:http://www.cnblogs.com/wenanry/archive/2010/09/06/1819552.html PS:本文参考李炎恢JS笔 ... 
随机推荐
- 给那些因为Firebug而舍不得FireFox的朋友
			Google Chrome浏览器调试 作为Web开发人员,我为什么喜欢Google Chrome浏览器 [原文地址:http://www.cnblogs.com/QLeelulu/archive/20 ... 
- python网络编程之socket
			*:first-child { margin-top: 0 !important; } body>*:last-child { margin-bottom: 0 !important; } /* ... 
- SpinLock(自旋锁)
			SpinLock(自旋锁) SpinLock 结构是一个低级别的互斥同步基元,它在等待获取锁时进行旋转. 在多核计算机上,当等待时间预计较短且极少出现争用情况时,SpinLock 的性能将高于其他类型 ... 
- android*API19
			android android.accessibilityservice android.accounts android.animation android.app android.app.adm ... 
- wcf wpf
			转 http://blog.csdn.net/thunder09/article/details/5792157 WPF就是所谓下一代Windows界面层技术,我觉得还有满有前途的.不过Vista发布 ... 
- XML配置silverlight   ,wcf 解析xml
			XML 代码: <?xml version="1.0" encoding="utf-8" ?><ChartSet xmlns:xsi=&qu ... 
- silverlight .net后台 设置visifire控件图表样式 属性说明
			.net后台 代码: 如图 Chart chart = new MyCharts(); //图表 //chart.Watermark = false; //没好使 ... 
- C#中子窗体获取父窗体中控件的内容
			今天在做一个联系人管理的C#设计时,遇到了这个问题,我需要将父窗体中的textBox中的值传到子窗体并进行数据库查询操作,我用了new 父窗体().textBox.text;来进行值传递,然而并无卵用 ... 
- DTO学习系列之AutoMapper(五)----当EntityFramework爱上AutoMapper
			有时候相识即是一种缘分,相爱也不需要太多的理由,一个眼神足矣,当EntityFramework遇上AutoMapper,就是如此,恋爱虽易,相处不易. 在DDD(领域驱动设计)中,使用AutoMapp ... 
- web开发常用样式
			1.div保持底部浮动(不受滚动条影响) position:fixed;_position:absolute;bottom:0px;_bottom:0px;_margin-top:expression ... 
