【原创】正则表达式(知识点总结)
一、两种创建方式: ①、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