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分钟以后观看。