JavaScript正则表达式基础知识汇总
来源:互联网 发布:淘宝数据平台 编辑:程序博客网 时间:2024/05/19 03:24
推荐:http://deerchao.net/tutorials/regex/regex.htm讲解详细,便于理解
转自:http://www.cnblogs.com/yangjunhua/archive/2012/12/11/2812405.html
一、创建正则对象:
1、构造函数RegExp创建正则对象
1 var pattern = new RegExp('s$'); //pattern匹配以s结尾的字符串
2、使用正则直接量
1 var pattern = /s$/; //建议这样写
二、正则表达式字符
1、反斜线\ 在正则表达式中表示转义序列
特殊符号:
^ $ . * + ? = ! : | \ / ( ) [ ] { }
如果想要在正则表达式中匹配它们,应该在他们前面加上反斜线,如:
var pattern = /\$/; //pattern匹配$符号
2、直接量字符
字符 匹配\o NUL字符(\u0000)\t 制表符(\u0009)\n 换行符(\u000A)\v 垂直制表符(\u000B)\f 换页符\r 回车符\xnn 由十六进制数nn指定的拉丁字符,例如:\x0A等价于\n\uxxxx 由十六进制数xxxx指定的Unicode字符,例如:\u0009等价于\t\cX 控制字符^X。例如:\cJ等价于换行符\n
3、字符类
字符 匹配[...] 方括号内的任意字符[^...] 非方括号内的任意字符[0-9] 0-9之间的数字[a-z] 小写的拉丁字母[A-Z] 大写的拉丁字母[0-9a-zA-Z] 数字和大小写拉丁字母
下面也属于字符类:
. 除换行符和其他Unicode行终止符之外的任意字符\s 任意Unicode空白符 \S 任意非Unicode空白符\d 任意ASCII码数字,等同于[0-9]\D 任意非ASCII码数字的字符,等同于[^0-9]\w 任意ASCII码单词字符,等同于[a-zA-Z0-9_]\W 任意非ASCII数字,等同于[^a-zA-Z0-9_][\b] 在字符类中表示退格直接量
4、重复字符类
贪婪的重复字符
字符 匹配{n,m} 前一项至少n次,但不能超过m次{n,} 前一项至少n次{n} 前一项恰好n次? 前一项0次或1次,等价于{0,1}+ 前一项至少一次,等价于{1,}* 前一项0次或多次,等价于{0,}
非贪婪的重复匹配只需在贪婪的重复字符后面加上一个?(问号),且问号后没有其他表达式字符,否则非贪婪匹配忽略。例:
1 var str = 'aaaaaa', 2 str2 = 'aaaaaabc', 3 pattern = /a+/, 4 pattern2, 5 pattern3; 6 7 pattern.exec(str); //全部匹配 8 9 pattern2 = /a+?/;10 pattern2.exec(str); //只匹配了变量str中的第一个a11 12 pattern3 = /a+?bc/;13 pattern3.exec(str2); //全部匹配,匹配结果为aaaaaabc
5、选择,分组,引用
字符 含义| 表示或,用于分隔选择() 子表达式(子模式),可以引用子模式匹配结果(?:) 子表达式(子模式),可以引用子模式匹配结果,但是子模式匹配结果不出现在正则匹配结果集中\n(n为数字) 引用对应的子模式匹配结果
例:
1 var pattern = /Java(?:Script)?(&VB\1)?/g,2 str = 'JavaScript&VBScript';3 4 pattern.exec(str); //全部匹配,\1表示Script字符串5 pattern.lastIndex = 0; //当正则对象拥有全局g标识时,如果同一个正则对象进行第二次匹配时,须将它的lastIndex重置为 06 pattern.exec(str); //第二次全部匹配
下面情况可能存在不能实现的期望:
var pattern = /(Java(?:Script))?&?(VB\2)?/, //或者写成pattern = /Java(?:Script)|(VB\1)?/;str = 'VBScript';pattern.exec(str); //不能匹配VBScript,\2表示为空,结果匹配VB子串var str2 = 'JavaScript&VBScript';pattern.exec(str2); //这样可以全部匹配//此例说明应该注意自己引用的子模式是否为空
6、位置字符
字符 匹配^ 字符串的开头$ 字符串的结尾\b 位于\w(单词字符)与\W(非单词字符)的边界或位于一个ASCII单词字符与一个字符串的开头和结尾之间的边界\B 非词语之间的位置(?=p) 正前向声明,要求接下来的字符与模式p匹配,但是不包括匹配中的那些字符(?!p) 反前向声明,要求接下来的字符不与模式p匹配
例:
1 var url = 'vip.etao.com/youhui.htm?drawCredits',2 pattern = /\byouhui\b/,3 pattern2 = /^vip\.etao\.com\/.+drawcredits$/i;4 pattern.exec(url); //匹配youhui子串5 pattern2.exec(url); //全部匹配url变量值
三、正则对象标志,属性,及方法
1、标志
标志 含义g 全局匹配i 不区分大小写m 多行匹配
2、方法
exec 接受一个字符串参数,返回由完全匹配和子表达式匹配结果组成的数组test 接受一个字符串参数,返回boolean值compile 编译正则表达式
3、属性
source 正则表达式的文本global 是否拥有全局搜索标志gignoreCase 是否拥有标志imultiline 是否拥有标志mlastIndex 搜索匹配的开始位置(可读写)
- JavaScript正则表达式基础知识汇总
- JavaScript正则表达式基础知识汇总
- JavaScript正则表达式基础知识汇总
- JavaScript正则表达式用法汇总
- JavaScript正则表达式用法汇总
- Javascript常用正则表达式汇总
- JavaScript正则表达式知识汇总
- JavaScript常用正则表达式汇总
- javaScript中的一些 正则表达式 的基础知识。
- 正则表达式基础知识之javascript vbscript
- 【JavaScript基础知识】——正则表达式
- 【学习】Javascript正则表达式——基础知识小结
- 用javascript验证表单数据正则表达式汇总
- 用javascript验证表单数据正则表达式汇总
- 正则表达式基础知识 (转)
- 正则表达式基础知识
- 有关正则表达式基础知识
- 正则表达式基础知识
- 常用DOS命令
- poj 1083
- MyEclipse项目如何导入到Eclipse
- java.net.SocketException: No buffer space available (maximum connections reached?): connect
- 用 SQL 脚本将 Access 导入 MSSQL 2000/2005 方法
- JavaScript正则表达式基础知识汇总
- visio2003中、origin中、matlab中,字体的大小以pt为单位,与word中的几号字大小是如何对应
- DPM Deformable Part Models release5新源码出来了
- JSP架构、JSP开发工具优缺点比较
- ios发短信
- C语言中库函数不区分大小写比较字符串
- 解决Android中“Android SDK Content loader has encountered a problem” “parseSdkContent Failed ”错误 .
- Android Toast简易消息提示框的使用
- web安全验收漏洞修复总结【java项目心血结晶】