day17-JavaScript正则表达式

一、前言

  之前我们落下的js的正则表达式,今天需要补上,我们今天来研究一下js的正则和python的正则有何不同,看看js的正则是如何定义的。JavaScript中支持正则表达式,其主要提供了两个功能:

  test    -检查字符串中是否和正则匹配。

  exec  - 获取正则表达式匹配的内容,如果未匹配,值为null,否则,获取匹配成功的数组。

二、正则匹配

2.1、test(string)

说明:检查字符串中是否和正则匹配,只要字符串中存在符合匹配规则,就返回true,不匹配就返回false。

>>>pattern = /\d+/   //定义正则表达式
/\d+/
>>>name = "qigao0808"  //存在匹配,返回true
"qigao0808"
>>>pattern.test(name);
true
>>>name = "qigao"  //不匹配,返回false
"qigao"
>>>pattern.test(name);
false

注意:只要正则在字符串中存在就匹配,如果想要开头和结尾匹配的话,就需要在正则前后加 ^和$

2.2、exec(string)

说明:获取正则表达式匹配的内容,如果未匹配,值为null,否则,获取匹配成功的数组。这个叫一级匹配。

>>>pattern = /\d+/    //定义正则表达式
/\d+/
>>>name = "qigao_08_sbh"
"qigao_08_sbh"
>>>pattern.exec(name) //以数组的形式返回匹配到的数据
["08", index: 6, input: "qigao_08_sbh"]

2.3、分组匹配

说明:匹配完毕之后,在匹配的值上再做一次分组匹配,匹配的值就是符合小括号中的值,这个也叫二级匹配

>>>text = "JavaScript is more fun than JavaEE or JavaBeans!";
"JavaScript is more fun than JavaEE or JavaBeans!"
>>>pattern = /^Java(\w+)/    //(\w+)的意思是我匹配完毕之后,在匹配的值上再做一次分组匹配,匹配的值就是符合小括号中的值
/^Java(\w+)/
>>>pattern.exec(text)
["JavaScript", "Script"]

三、定义正则表达式

3.1、/.../

说明:用于定义正则表达式

>>>pattern = /\d+/    //定义正则表达式
/\d+/
>>>name = "qigao_08_sbh"
"qigao_08_sbh"
>>>pattern.exec(name) //以数组的形式返回匹配到的数据
["08", index: 6, input: "qigao_08_sbh"]

3.2、/.../g

说明:表示全局匹配,全局匹配过程中,是一个一个的拿,跟python的迭代器一样,全部匹配完毕之后,你返回的null。值匹配就是新的一轮。

>>>pattern = /Java(\w+)/g  //定义全局匹配的正则
/Java(\w+)/g
>>>text = "JavaScript is more fun than JavaEE or JavaBeans!";
"JavaScript is more fun than JavaEE or JavaBeans!"
>>>pattern.exec(text)  //一个一个获取
["JavaScript", "Script"]
>>>pattern.exec(text)
["JavaEE", "EE"]
>>>pattern.exec(text)
["JavaBeans", "Beans"]
>>>pattern.exec(text)  //匹配完毕之后,返回null
null

3.3、/.../i

说明:表示不区分大小写

>>>pattern = /java(\w+)/i   //不区分大小写
/java(\w+)/i
>>>text = "JavaScript is more fun than JavaEE or JavaBeans!";
"JavaScript is more fun than JavaEE or JavaBeans!"
>>>pattern.exec(text)
["JavaScript", "Script"]

3.4、/.../m 表示多行匹配

说明:表示多行匹配,JS正则匹配时本身就是支持多行,此处多行匹配只是影响正则表达式^和$,m模式也会使用^$来匹配换行的内容)。

>>>text = "JavaScript is more fun than \nJavaEE or JavaBeans!";
"JavaScript is more fun than 
JavaEE or JavaBeans!"
>>>pattern = /^Java\w+/gm  //匹配多行
/^Java\w+/gm
>>>pattern.exec(text)  //匹配到第1行的字符串
["JavaScript"]
>>>pattern.exec(text)  //匹配到第2行的字符串
["JavaEE"]
>>>pattern.exec(text)
null

所以这种方式可以的,但是其他方式不可以匹配第二行的,还是把它当做一个整的字符串。

四、字符串中相关方法

obj.search(regexp)                   获取索引位置,搜索整个字符串,返回匹配成功的第一个位置(g模式无效)
obj.match(regexp)                    获取匹配内容,搜索整个字符串,获取找到第一个匹配内容,如果正则是g模式找到全部
obj.replace(regexp, replacement)     替换匹配替换,正则中有g则替换所有,否则只替换第一个匹配项,
                                        $数字:匹配的第n个组内容;
                                        $&:当前匹配的内容;
                                        $`:位于匹配子串左侧的文本;
                                        $':位于匹配子串右侧的文本
                                        $$:直接量$符号

五、自定义表单验证插件

5.1、表单验证的目的?

减少对数据库的请求,对于哪些简单的用户输入格式或者用户输入为空,但是密码和用户的操作,需要交给后台处理。但是如果浏览器的js被禁用了,那就只能发到后台,让后台去处理了。所以我们一般情况下是前端写一部分,后端全部写。

5.2、详细信息猛击这里,请从15分钟以后观看。

posted @ 2018-02-07 15:04  帅丶高高  阅读(186)  评论(0编辑  收藏  举报