正则小结
正则是编程数据处理的利器。
在我接触程序的时间里,正则一直是我的软肋,但是我知道它的价值,String类型数据提供了很多封装正则的功能函数,我们在大部分的工作学习中几乎只需用到这些方法就可以处理大部分问题了,以至于前端这块越来越少的人去研究正则表达式。在我看来,正则是程序员修行内功的一门基本功,它能解决太多的问题了!而只依赖功能函数的程序员,都是有着巨大缺陷的。
正则表达式由"/匹配逻辑/修饰符"组成(这里不介绍 new RegExp(pattern, attributes)构造模式,我觉得这样繁琐),修饰符主要是 i, g, m,分别用于指定全局匹配、区分大小写的匹配和多行匹配。具体用法,你可以参照:http://www.w3school.com.cn/jsref/jsref_obj_regexp.asp。
这里主要讲匹配逻辑,匹配逻辑主要由三部分组成:元字符,量词,方括号。其中量词和方括号都是为元字符做修饰服务的,可以省略。
元字符,元字符是表达你想匹配涵义的字符。具体看下图:
举例如下:
var str="Give 100%!"; var patt1=/\w/g; //匹配全局的单词字符,返回字符数组 var a=str.match(patt1); console.log(a); //[G,i,v,e,1,0,0]
这里提醒一句,正则表达式作为对象,其有三个方法,分别是:compile, test, exec,各自具体功能,须移步http://www.w3school.com.cn/jsref/jsref_obj_regexp.asp。
String对象也提供了几个用来操控正则表达式对象的四个方法,分别是search,match,replace,split,我们平常主要用到的是match方法,当然其他三个在特定逻辑业务里也很有用。
match用来找到符合正则表达式匹配的一个或多个字符,返回一个结果组成的数组。
举例如下:
var str="Give 100%!"; var patt1=/\D/g; //匹配全局的非数字字符,返回字符数组 var a=str.match(patt1); console.log(a); //["G", "i", "v", "e", " ", "%", "!"]
下面要说的是量词,量词是用来指定匹配内容单位(如元字符或'(匹配逻辑)')的个数限制的,举例如下:
var str="ni de xiao rong 1123"; var temp=str.match(/\d+/g); console.log(temp); //返回所有的数字 [1123]
方括号,方括号用于查找某个范围内的字符,举例如下:
var str="jack Chen"; var patt=/[a-d]/g; var temp=str.match(patt); console.log(temp); //["a", "c"]
这里再提供一个查找并截取“()”内容的示实例,当遇到要查找特殊字符的内容时为了避免混淆语义,所以需要转义,比如这里"\(,\)"。
var str="sdfh42397237(ksdhfkhdfhsfhsakh)36252534"; var patt=/\((\w+)\)/g; var result=str.match(patt); result=result[0].match(/\w+/); console.log(result[0]);//ksdhfkhdfhsfhsakh