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

本文详细介绍了正则表达式的创建方式、测试方法及使用方法,并提供了常见应用场景的示例,如邮政编码验证、文件类型匹配等。
一、两种创建方式:
①、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

转载于:https://www.cnblogs.com/pm-dongjian/p/5020392.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值