您的位置:首页 > Web前端 > JavaScript

基于javascript上手正则表达式

2016-02-23 13:00 489 查看
正则表达式用于字符串比配,由于其高效性可以大幅度减少服务器端开销。
两种创建方式:
var box = new RegExp("box","ig");
var box1 = /box/ig;
/** 第二个参数可选模式修饰符
i : 忽略大小写
g : 全局匹配
m : 多行匹配
**/
常用正则比较方法
test 正则对象(RegExp)的正则比较,返回true/false。使用方法:RegExpObject.test(String)
exec 正则对象的正则比较,返回匹配的字符串。使用方法:RegExpObject.exec(String)
当 RegExpObject 是一个全局正则表达式时,exec() 的行为就稍微复杂一些。它会在 RegExpObject 的 lastIndex 属性指定的字符处开始检索字符串 string。当 exec() 找到了与表达式相匹配的文本时,在匹配后,它将把
RegExpObject 的 lastIndex 属性设置为匹配文本的最后一个字符的下一个位置。这就是说,您可以通过反复调用 exec() 方法来遍历字符串中的所有匹配文本。当 exec() 再也找不到匹配的文本时,它将返回 null,并把 lastIndex 属性重置为 0。

match 字符串方法的正则比较,返回匹配的字符串数组。使用方法:String.match(RegExpObject )
replace 字符串方法的正则比较,返回匹配替换后的字符串。使用方法:String.replace(RegExpObject,
"replacement")
search 字符串方法的正则比较,返回第一个匹配到字符串的位置,查找不到返回-1。使用方法:String.search(RegExpObject
)
split 字符串方法的正则比较,以匹配到的字符作为分隔,将原有字符串拆分成数组,返回数字。使用方法:
String.match(RegExpObject )
RegExp对象的静态方法
input:当前被匹配的字符串
lastMatch:最后一个匹配字符串
lastParen:最后一对圆括号内的子字符串,分组
leftContext:匹配之前的子字符串
multiline:所有表达式是否都用于多行,布尔值。
rightContext:匹配之后的子字符串
RegExp的实例属性
global:g 属性是否被设置
ignoreCase:i 属性是否被设置
multiline:m 属性是否被设置
source:正则的源字符串
lastIndex:exec后的index
获取控制
单个字符和数字
. 匹配除换行符外的任意一个字符
[a-z0-9] 匹配括号中字符集中的任意字符
[^a-z0-9] 匹配不在括号中字符集中的任意字符
\d 匹配数字
\D 匹配非数字
\w 匹配字母和数字及_
\W 匹配非字母和数字及_
空白字符
\0 匹配null字符
\b 匹配空格字符
\n 匹配换行符
\r 匹配回车字符
\t 匹配制表符
\s 匹配空格、空白、制表和换行符
\S 匹配非空白字符
锚字符
^ 行首匹配
$ 行尾匹配
\A
\b 匹配边界
\B
\G
\Z
\z
重复字符
x? 匹配0个或1个x
x* 匹配0个或多个x
x+ 匹配至少1个x
(xyz)+ 匹配至少1个(xyz)
x{m,n} 匹配{m,n}区间个x
替换字符
| 或操作
记录字符
() 分组,分组后相当于一个整体的字符
\1或$1 匹配第一个分组
\2或$2 匹配第二个分组
贪婪和惰性
贪婪:可匹配的最大限度
惰性:可匹配的尽量少
前瞻捕获:例:/goo(?=gle)/ 当goo后紧跟gle时才进行捕获,捕获返回goo
常用正则表达式
邮政编码:var postCode = /[1-9]\d{5}/
文件压缩包:var packages = /^[\w\-]+\.zip|rar|tar|gz/
删除多余空格:String.replace(/\s/g,"")
电子邮件:var email = /^([\w\.\-]+)@([\w\.\-]+)\.([a-zA-Z]{2,4})$/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息