【原创】正则表达式(知识点总结)

一、两种创建方式:
①、RegExp
var game=new RegExp("game")
var game=new RegExp("game","igm") //第二个参数可接受i(忽略大小写)、g(全局匹配)、m(多行匹配)三个参数,
②、 / /
var game=/game/
var game=/game/ig
二、正则测试方法 RegExp对象有两个测试方法:test() 和exec();用于字符串测试 ①、test() 接收参数为字符串,返回boolean值。参数为字符串
var pattern=/box/i; var str="this is a box" console.log(pattern.test(str)); //true 合成一条,表示为: console.log(/box/i.test("this is a Box")); ②、exec() 匹配了则返回数组,否则返回null;参数为字符串 >console.log(/box/i.exec("this is a Box")); ["Box", index: 10, input: "this is a Box"] console.log(/box/i.exec("this is a Box")=="Box"); true var arr=/box/i.exec("this is a Box");arr; ["Box"] //匹配上了返回数组 三、正则使用方法 在正则应用中,除了test()和exec()两个测试方法,还有如下使用方法:(参数都为正则) ①、match(pattern) ②、replace(pattern,replacement) ③、search(pattern) ④、split(pattern) ①、match(pattern) 匹配得到数组 var str="this is a game,Do you want to Play the Game?";console.log(str.match(/game/ig)); ["game", "Game"] var str="this is a game,Do you want to Play the Game?";console.log(str.match(/game/ig).length); 2 ②、replace(pattern,replacement) 用第二个参数替换第一个参数(第一个参数为匹配到的值) var str="this is a game,Do you want to Play the Game?";console.log(str.replace((/game/ig),"text")); this is a text,Do you want to Play the text? ③、search(pattern)查找匹配位置,返回位置,否则返回-1 var str="this is a game,Do you want to Play the Game?";console.log(str.search(/game/igm)); 10 //匹配到game,返回第一个Game的索引 var str="this is a game,Do you want to Play the Game?";console.log(str.search(/Game/)); 39 //匹配到Game,返回第一个Game的索引 var str="this is a game,Do you want to Play the Game?";console.log(str.search(/Tame/)); -1 //匹配不到,返回-1 ④、split(pattern) 已匹配到的字符为分割点,分割成数组 var arr="this is a box,it is sigh BOX!".split(/ /ig);console.log(arr); ["this", "is", "a", "box,it", "is", "sigh", "BOX!"] var arr="this is a box,it is sigh BOX!".split(/b/ig);console.log(arr); ["this is a ", "ox,it is sigh ", "OX!"]

四、正则-元字符

字符 匹配情况
. 点字符,匹配除换行字符\n外的任意字符
[a-z0-9] 匹配括号内的字符集中的任意字符,即0-9或者a-z
[^a-z0-9] 匹配任意不在字符集内的任意字符
\d       匹配数字0-9
\D           匹配非数字,同[^0-9]
\w   匹配字母,数字或者下划线
\W   匹配除字母、数字和下划线之外的字符
\0 匹配null字符
\n 匹配换行符  
\t 匹配制表符
\b 匹配纯空格字符
\f   匹配进纸字符
\r 匹配回车字符
\s 匹配空白符、空格字符、制表符和换行符(有疑问)
\S  匹配非空白字符
^ 从行首开始匹配
$ 从行末尾开始匹配
 x?  匹配0个或者1个
 x+    匹配1个或者大于1个
 x*  匹配0个或者大于0个
 (xyz)+  匹配至少一个(xyz)
 x{m,n}  匹配最少m个,最多n个
 ab|cd|ef  匹配ab或者cd或者ef中任意一个
 \1或者$1  匹配第一个分组中的内容
 \2或者$2  匹配第二个分组中的内容
 \3或者$3  匹配第三个分组中的内容
 (string)  用于反向引用的分组
 \z  只匹配字符串结束处
 \Z  匹配字符串结尾处或行尾
 \G  匹配当前搜素的开始位置
 \A  只匹配字符串开始处

五、正则匹配-贪婪&&懒惰

匹配方式有贪婪(默认)和懒惰两种方式

贪婪  懒惰
+ +?
? ??
* *?
{n} {n}?
{m,n} {m,n}?
{n,} {n,}?

 

 

 

 

 

 

 

 

六、常用的正则表达式收集

 

1.检查邮政编码
var pattern = /[1-9][0-9]{5}/; //共6 位数字,第一位不能为0
var str = '224000';
alert(pattern.test(str));

2.检查文件压缩包
var pattern = /[\w]+\.zip|rar|gz/; //\w 表示所有数字和字母加下划线
var str = '123.zip'; //\.表示匹配.,后面是一个选择
alert(pattern.test(str));   //true

3.删除多余空格
var pattern = /\s/g; //g 必须全局,才能全部匹配
var str = '111 222 333';
var result = str.replace(pattern,''); //把空格匹配成无空格
alert(result); 、//返回 result=111222333,不改变str的值

4.删除首尾空格
var pattern = /^\s+/; //强制首
var str = ' goo gle ';
var result = str.replace(pattern, '');
pattern = /\s+$/; //强制尾
result = result.replace(pattern, '');
alert('|' + result + '|');
或者如下:
var pattern = /^\s*(.+?)\s*$/; //使用了非贪婪捕获 var str = ' google '; alert('|' + pattern.exec(str)[1] + '|');
或者如下:
var pattern = /^\s*(.+?)\s*$/; var str = ' google '; alert('|' + str.replace(pattern, '$1') + '|'); //使用了分组获取 5.简单的电子邮件验证 var pattern = /^([a-zA-Z0-9_\.\-]+)@([a-zA-Z0-9_\.\-]+)\.([a-zA-Z]{2,4})$/; var str = 'yc60.com@gmail.com'; alert(pattern.test(str));
var pattern = /^([\w\.\-]+)@([\w\.\-]+)\.([\w]{2,4})$/; var str = 'yc60.com@gmail.com'; alert(pattern.test(str));

 转载请注明链接:http://www.cnblogs.com/pm-dongjian/p/5020392.html

posted on 2015-12-04 20:43  东渐  阅读(279)  评论(0编辑  收藏  举报

导航