设为首页 加入收藏

TOP

JS正则表达式实例分析
2019-03-29 12:08:17 】 浏览:81
Tags:正则 表达式 实例分析

        正则表达式,有木有人像我一样,学了好几遍却还是很懵圈,学的时候老明白了,学完了忘光了。好吧,其实还是练的不够,所谓温故而知新,可以为师矣,今天就随我来复习一下这傲娇的正则表达式吧。


         为啥要有正则表达式呢?其实就是因为计算机笨(这话不是我说的),比如123456@qq.com,我们一看就是邮箱,可是计算机不认识啊,所以我们就要用一些计算机认识的语言,来制定好规则,告诉它符合这个规则的就是个邮箱,这样计算机就能帮我们找到对应的东西了。所以正则就是用来设置规则,来完成我们需求的一些操作的,比如登录验证啦,搜索指定的东西啦等等,说太多都是多余,直接看正题吧。


      定义正则:


   正则的常用方法 


      1  test()  :在字符串中查找符合正则的内容,若查找到返回true,反之返回false.


        用法:正则.test(字符串) 


        例子:判断是否是数字


 正则表达式中有很多符号,代表着不同的意思,用来让我们去定义不同的规则,比如上面\D,还有下面的这些:


\s : 空格
\S : 非空格
\d : 数字
\D : 非数字
\w : 字符 ( 字母 ,数字,下划线_ )
\W : 非字符例子:是否有不是数字的字符


(下面会根据例子,依次讲一些常用的字符,最后再作总结。)


 2   search()  :在字符串搜索符合正则的内容,搜索到就返回出现的位置(从0开始,如果匹配的不只是一个字母,那只会返回第一个字母的位置), 如果搜索失败就返回 -1 


   用法:字符串.search(正则)


   在字符串中查找复合正则的内容。忽略大小写:i——ignore(正则中默认是区分大小写的 如果不区分大小写的话,在正则的最后加标识 i )


例子:在字符串中找字母b,且不区分大小写


3  match()  在字符串中搜索复合规则的内容,搜索成功就返回内容,格式为数组,失败就返回null。
     用法: 字符串.match(正则)
     量词:+ 至少出现一次 匹配不确定的次数(匹配就是搜索查找的意思)
    全局匹配:g——global(正则中默认,只要搜索到复合规则的内容就会结束搜索 )


4 replace() :查找符合正则的字符串,就替换成对应的字符串。返回替换后的内容。


    用法: 字符串.replace(正则,新的字符串/回调函数)(在回调函数中,第一个参数指的是每次匹配成功的字符)


     | : 或的意思 。


   例子:敏感词过滤,比如 我爱北京天安门,天安门上太阳升。------我爱*****,****上太阳升。即北京和天安门变成*号,


一开始我们可能会想到这样的方法:


要想实现几个字对应几个*,我们可以用回调函数实现:


replace是一个很有用的方法,经常会用到。


正则中的字符


():,小括号,叫做分组符。就相当于数学里面的括号。如下:


同时,正则中的每一个带小括号的项,都叫做这个正则的子项。子项在某些时候非常的有用,比如我们来看一个栗子。


例子:让2013-6-7 变成 2013.6.7


match方法也会返回自己的子项,如下:


补充:exec()方法:和match方法一样,搜索符合规则的内容,并返回内容,格式为数组。


                      用法:正则.exec(字符串);


属性:input(代表要匹配的字符串)  


栗子:不是全局匹配的情况:


全局匹配:如果是全局匹配,可以通过while循环 找到每次匹配到的字符串,以及子项。每次匹配都接着上次的位置开始匹配


[] : 表示某个集合中的任意一个,比如 [abc] 整体代表一个字符 匹配 a b c 中的任意一个,也可以是范围,[0-9] 范围必须从小到大 。


[^a] 整体代表一个字符   :^写在[]里面的话,就代表排除的意思


例子:匹配HTML标签 比如<div >


转义字符


\s : 空格
\S : 非空格
\d : 数字
\D : 非数字
\w : 字符 ( 字母 ,数字,下划线_ )
\W : 非字符
.(点)——任意字符
\. : 真正的点
\b : 独立的部分 ( 起始,结束,空格 )
\B : 非独立的部分


关于最后两个来看个栗子:


例子:写一个用class名获取节点的函数:


我们之前可能见过这样的函数:


其实这是存在问题的,比如它如果一个标签里面有两个class,或者存在相同名字的class,比如<div >


\a 表示重复的某个子项 比如:


\1 重复的第一个子项


\2 重复的第二个子项


例子(面试题中经常问到):找重复项最多的字符个数


split():字符串中的方法,把字符串转成数组。


sort():数组中的排序方法,按照ACALL码进行排序。


join():数组中的方法,把数组转换为字符串


{n,m}:至少出现n次,最多m次


{n,} :至少n次


* :任意次 相当于{0,}


? :零次或一次 相当于{0,1}


+ :一次或任意次相当于 {1,}


{n}: 正好n次


例子:判断是不是QQ号


//^ : 放在正则的最开始位置,就代表起始的意思,注意  /[^a] /   和   /^[a]/是不一样的,前者是排除的意思,后者是代表首位。
//$ : 正则的最后位置 , 就代表结束的意思


例子:去掉前后空格(面试题经常出现)


常用的一些表单校验


为了方便且不冲突,我们可以用json的格式 建立自己的空间,如下:


/*


var re = {
email : /^\w+@[a-z0-9]+(\.[a-z]+){1,3}$/,
number : /\d+/
};


re.email


*/


正则的基础知识点大概就这么多。


 


 


 


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇JavaScript函数的防抖和节流 下一篇JavaScript处理异步请求的几种方..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目