【面試系列】之六:關於正則表達式

之六:關於正則表達式

開篇

 我今天下午上班的時候接到了搜狐的面試通知,面試時間是後天也就是週三上午的十點半,而後週三下午的時候還有58的線上答題。
因此啦,這幾天要抓緊複習的速度,不能拖拖拉拉。今天完成正則表達式,明天就更新css3的知識css

這個時候各大公司的筆試面試都開始了,各位小夥伴一塊兒加油吧!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}?/加上一個?便可。url

分組:

能夠用()進行分組,能夠Byr(on|Ca)sper進行或,或者是(/d/w12){9}進行轉化
分組的內容從前到後,分別分組爲$1,$2,$3...code

忽略分組:

(?: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正則表達式專題,視頻詳細透徹,加油!

相關文章
相關標籤/搜索