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

之六:关于正则表达式

开篇

 我本日下昼上班的时刻接到了搜狐的口试关照,口试时候是后天也就是周三上午的十点半,然后周三下昼的时刻另有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正则表达式专题,视频细致透辟,加油!

    原文作者:bradwang
    原文地址: https://segmentfault.com/a/1190000006769633
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞