资讯专栏INFORMATION COLUMN

【面试系列】之六:关于正则表达式

dmlllll / 1838人阅读

摘要:之六关于正则表达式开篇我今天下午上班的时候接到了搜狐的面试通知,面试时间是后天也就是周三上午的十点半,然后周三下午的时候还有的线上答题。

之六:关于正则表达式 开篇

 我今天下午上班的时候接到了搜狐的面试通知,面试时间是后天也就是周三上午的十点半,然后周三下午的时候还有58的线上答题。
所以啦,这几天要抓紧复习的速度,不能拖拖拉拉。今天完成正则表达式,明天就更新css3的知识

这个时候各大公司的笔试面试都开始了,各位小伙伴一起加油吧!

正则的知识很重要,一定要重视哦

基本语法介绍 首先如何实例化一个正则表达式对象
// 使用字面量的方式
var reg = /d/g;
// 使用构造函数的方式
var reg = new RegExp("","g");

好,解释一下这两种方式,一种就是把要写的正则放在两个//之间,其中//后面的是修饰符
第二种,是通过new一个RegExp,接受两个参数,第一个是正则的内容。在前面加上了一个是对中的进行转义,记住这个是必须的,有特殊的字符都需要转义。第二个参数是修饰符

下面说一下元字符:
元字符的概念:元字符是在正则表达式中有特殊含义的非字母字符

f 换页符 

 换行符 

 回车 
	 制表符 
v 垂直制表符 
/ 一个 / 直接量 
 一个  直接量 
. 一个 . 直接量 
* 一个 * 直接量 
 一个 + 直接量 
? 一个 ? 直接量 
| 一个 | 直接量 
( 一个 ( 直接量 
) 一个 ) 直接量 
[ 一个 [ 直接量 
] 一个 ] 直接量 
{ 一个 { 直接量 
} 一个 } 直接量 
 字符类和范围类:

我们可以通过[]来表示一个类,匹配的时候匹配到[]其中一个即可。
例如[0-9]表示数字0到9,[a-zA-Z]表示匹配所有的大小写字母。
同时我们可以在[]中加入^表示一个反向类,例如[^9]表示除了9之外的所有字符

预定义类:
. 表示除了回车符和换行符之外的所有字符,等同于 [^
]
d 表示数字字符,等同于[0-9]
D 表示非数字字符,等同于[^0-9]
s 表示空白符,等同于[	
xf
]
S 表示非空白符,等同于[^	
xf
]
w 表示单词字符(字母数字下划线),等同于[a-zA-Z_0-9]
W 表示非单词字符,等同于[^a-zA-Z_0-9]
边界匹配字符:
^ 表示以XXX开始
$ 表示以XXX结束
 单词边界
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正则表达式专题,视频详细透彻,加油!

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/80244.html

相关文章

  • 前端资源系列(4)-前端学习资源分享&前端面试资源汇总

    摘要:特意对前端学习资源做一个汇总,方便自己学习查阅参考,和好友们共同进步。 特意对前端学习资源做一个汇总,方便自己学习查阅参考,和好友们共同进步。 本以为自己收藏的站点多,可以很快搞定,没想到一入汇总深似海。还有很多不足&遗漏的地方,欢迎补充。有错误的地方,还请斧正... 托管: welcome to git,欢迎交流,感谢star 有好友反应和斧正,会及时更新,平时业务工作时也会不定期更...

    princekin 评论0 收藏0
  • JavaScript系列(四) - 收藏集 - 掘金

    摘要:函数式编程前端掘金引言面向对象编程一直以来都是中的主导范式。函数式编程是一种强调减少对程序外部状态产生改变的方式。 JavaScript 函数式编程 - 前端 - 掘金引言 面向对象编程一直以来都是JavaScript中的主导范式。JavaScript作为一门多范式编程语言,然而,近几年,函数式编程越来越多得受到开发者的青睐。函数式编程是一种强调减少对程序外部状态产生改变的方式。因此,...

    cfanr 评论0 收藏0

发表评论

0条评论

dmlllll

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<