一、前言
之前我们落下的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分钟以后观看。