正则表达式到底是什么
正则表达式
标题正则表达式(regular expression)是什么呢?
正则表达式是按照某种规则组成的一个表达式。 作用就是为了匹配字符串,让它符合某一种规律。那正则表达式到底是什么样的呢?
正则表达式也叫规则表达式,就是普通字符和元字符(元字符就是具有特殊含义的的字符)组成的。正则表达式中常用的元字符有哪些呢?
. 用这个符号可以表示除了换行和回车之外的任意字符。
\d用这个符号可以表示0-9任意数字字符。
\d用这个符号可以表示任意非数字字符。
\w用这个符号可以表示任意字母数字下划线这些单词字符。
\w用这个字符可以表示除了任意数字字母下划线的字符。
\s 用这个字符可以匹配到空白字符,就是换行呀空格呀tab呀等等。
\s用这个字符可以匹配到非空白符。
[]这个字符表示范围例如`
[0-9]就是匹配数字0到9之间的任意一个数字,一个字符串中只要有一个字符符合这个规则就会返回true`。 [0-9a-za-z]就是匹配任意一个数字或者字母。|表示或者。
[0-9]|[a-z] 表示的是要么是一个数字,要么是一个小写的字母()表示分组 提升优先级。
([1-5])([a-z]) 三组, 从([1-5])开始计算然后是([a-z])。
* 表示前面的表达式出现了0次到多次。
+ 表示的是:前面的表达式出现了1次到多次 [a-z][9]+ 小写字母一个后面最少一个9,或者多个9例如
“abcdcd9999”
? 表示的是:前面的表达式出现了0次到1次,最少是0次,最多1次 ,另一个含义:阻止贪婪模式。
{} 更加的明确前面的表达式出现的次数。
{0,}表示的是前面的表达式出现了0次到多次,和 *一样的。
{1,} 表示的是前面的表达式出现了1次到多次,和 +一样的
{0,1} 表示的是前面的表达式出现了0次到1次,和 ?一样的
{4,11} 表示的是前面的表达式出现了4次到11次. 注意{,10}不能这么写,正则表达式不认可。
^ 表示的是以什么开始,或者是取非(取反) ^[0-9] 以数字开头。 [^0-9] 取反,非数字,放在[]的里面表示非在外面表示以什么开头。
[^a-z] 非小写字母$ 表示的是以什么结束 [0-9]$ 以字结尾。
在精确匹配的时候可以用以什么开头以什么结尾。^[a-za-z0-9]{1,11}$以数字字母开头出现1到11次以数字字母结尾。
正则表达式怎么书写呢?
构造函数方式 var reg=new regexp ("\d",g) ,g表示全局搜索。
直接声明赋值:var reg = /\d/i;
正则表达始终提供了test()方法来验证字符串是否被正则匹配到了,匹配到返回true,没有匹配到返回false
var reg=/^[\u4e00-\u9fa5]{2,4}$/; reg.test("哈哈");返回true 这个正则用来匹配所有汉字的出现2-4次以汉字开头汉字结尾。
正则应用场景很多验证表单呀,提取字符串中的指定格式字符呀等等。
//匹配email地址,将email存入数组中取出。 var str = "126@xixi.com,haha@courage.cn, 78779312@qq.com,emailenglish@emailenglish.englishtown.com 2234312@qq.com..."; var array = str.match(/\w+@\w+\.\w+(\.\w+)?/g); console.log(array); // 替换所有空白符 var str = " 123 abc 的发 呵呵 "; str = str.replace(/\s/g,"xx"); console.log(str);
在熟悉正则表达式的一些规则后就可以自己写一些特定有意义的表达式去匹配想匹配的字符串了,但是有一款本人觉得巨好用的插件介绍给大家。https://www.baidufe.com/fehelper一款谷歌插件,它的功能如下:
fe助手:包括json格式化、二维码生成与解码、信息编解码、代码压缩、美化、页面取色、markdown与html互转、网页滚动截屏、正则表达式、时间转换工具、编码规范检测、页面性能检测、ajax接口调试、密码生成器、json比对工具