之六:关于正则表达式
开篇
我本日下昼上班的时刻接到了搜狐的口试关照,口试时候是后天也就是周三上午的十点半,然后周三下昼的时刻另有58的线上答题。
所以啦,这几天要抓紧温习的速率,不能拖拖拉拉。本日完成正则表达式,来日诰日就更新css3的学问
这个时刻各大公司的笔试口试都最先了,列位小伙伴一同加油吧!
正则的学问很主要,一定要注重哦
基础语法引见
起首怎样实例化一个正则表达式对象
// 运用字面量的体式格局
var reg = /\d/g;
// 运用组织函数的体式格局
var reg = new RegExp('\\b','g');
好,解释一下这两种体式格局,一种就是把要写的正则放在两个//
之间,个中//
背面的是修饰符
第二种,是经由过程new一个RegExp,接收两个参数,第一个是正则的内容。在\b
前面加上了一个\
是对\b
中的\
举行转义,记着这个是必需的,有特别的字符都须要转义。第二个参数是修饰符
下面说一下元字符:
元字符的观点:元字符是在正则表达式中有特别寄义的非字母字符
\f 换页符
\n 换行符
\r 回车
\t 制表符
\v 垂直制表符
\/ 一个 / 直接量
\\ 一个 \ 直接量
\. 一个 . 直接量
\* 一个 * 直接量
\ 一个 + 直接量
\? 一个 ? 直接量
\| 一个 | 直接量
\( 一个 ( 直接量
\) 一个 ) 直接量
\[ 一个 [ 直接量
\] 一个 ] 直接量
\{ 一个 { 直接量
\} 一个 } 直接量
字符类和局限类:
我们能够经由过程[]
来示意一个类,婚配的时刻婚配到[]
个中一个即可。
比方[0-9]
示意数字0到9,[a-zA-Z]
示意婚配一切的大小写字母。
同时我们能够在[]
中到场^
示意一个反向类,比方[^9]
示意除了9以外的一切字符
预定义类:
. 示意除了回车符和换行符以外的一切字符,等同于 [^\r\n]
\d 示意数字字符,等同于[0-9]
\D 示意非数字字符,等同于[^0-9]
\s 示意空白符,等同于[\t\n\x\f\r]
\S 示意非空白符,等同于[^\t\n\x\f\r]
\w 示意单词字符(字母数字下划线),等同于[a-zA-Z_0-9]
\W 示意非单词字符,等同于[^a-zA-Z_0-9]
边境婚配字符:
^ 示意以XXX最先
$ 示意以XXX完毕
\b 单词边境
\B 非单词边境
量词:
? 涌现零次或一次(最多涌现一次)
+ 涌现一次或屡次(最少涌现一次)
* 涌现零次或屡次(恣意次)
{n} 涌现n次
{n,m} 涌现n到m次
{n,} 最少涌现n次
贪欲和非贪欲形式:
1.正则表达式默许是贪欲形式,也就是说,正则婚配是会尽能够根据量词的上线多婚配
2.想要封闭正则表达式的贪欲形式,只须要这么写/\d{1,8}?/
加上一个?
即可。
分组:
能够用()
举行分组,能够Byr(on|Ca)sper
举行或,或者是(/d/w12){9}
举行转化
分组的内容夙昔到后,离别分组为$1,$2,$3...
疏忽分组:
(?:Byron).(ok)
只要在分组内加上?:
就能够疏忽分组
前瞻:
js正则表达式中只要前瞻没有后顾。
前瞻就是正则表达式婚配到划定规矩的时刻,向前搜检是不是相符断言
exp(?=assert) 正向前瞻,看一下正则背面的内容是不是能够婚配上
exp(?!assert) 负向前瞻,看一下正则背面的内容是不是能够不婚配上
对象属性:
global:是不是举行全局搜刮,默许不举行,例子:/\d/g
ignore case:是不是疏忽大小写,默许是不疏忽,例子:/\d/i
multiline:多行搜刮,默许不开启多行搜刮
lastIndex:是当前表达式婚配内容的末了一个字符的下一个位置
source:正则表达式的文本字符串
正则表达式的两个要领:
test() // 接收一个参数,推断传入的字符串是不是婚配正则表达式。
特别注意:假如正则中有g,会涌现新鲜的效果,原因是lastIndex在作祟
exec() // 接收一个参数
字符串和正则有关的要领:
search() // 接收一个参数,传入要搜刮的正则表达式,假如婚配胜利就返回第一个婚配效果的index,不然就返回-1
match() // 和正则表达式exec很像
spilt() // 将字符串分割为数组
replace() // 支撑两个参数,第一个是寻觅和正则婚配的,下一个是替代的内容
例题
1.用正则婚配手机号码
function (tele) {
if (tele.search(/^1[34578]\d{9}$/) > -1) {
return true
} else {
return false
}
}
另有一种要领:
function (tele) {
return /^1[34578]\d{9}$/.test(tele);
}
2.用正则从url中截取信息
var url = 'http://www.baidu.com/?dsp=ipad&sid=20510&name=wangbin';
var reg = /[?&](\w+)=(\w+)/g;
var obj = {};
while(ret = reg.exec(url)) {
obj[ret[1]] = ret[2];
}
console.log(obj);
来日诰日就口试啦,祝我胜利吧!
对了关于本期专题的内容发起人人去看慕课网上的js正则表达式专题,视频细致透辟,加油!