最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

JS正則表達(dá)式常見(jiàn)用法實(shí)例詳解

 更新時(shí)間:2018年06月19日 12:15:13   作者:行果  
這篇文章主要介紹了JS正則表達(dá)式常見(jiàn)用法,結(jié)合實(shí)例形式分析了javascript元字符、分組符、修飾符、量詞基本含義,并結(jié)合具體案例形式分析了javascript正則基本使用技巧,需要的朋友可以參考下

本文實(shí)例講述了JS正則表達(dá)式常見(jiàn)用法。分享給大家供大家參考,具體如下:

前言:正則表達(dá)式(regular expression)反反復(fù)復(fù)學(xué)了多次,學(xué)了又忘,忘了又學(xué),這次打算把基本的東西都整理出來(lái),加強(qiáng)記憶,也方便下次查詢。

學(xué)習(xí)正則表達(dá)式之前首先需要掌握記憶這些基本概念:

1.元字符:(.,\w,\W,\d,\D,\s,/S,^,$,)

字符 含義
. 匹配除了換行符以外的任意字符。
\s 代表任意空白符(換行符,制表符,空格)
\S 匹配任意非空字符串
\b 匹配單詞邊界,匹配單詞的開(kāi)頭和結(jié)尾。
\B 匹配一個(gè)非單詞邊界
\d 匹配一個(gè)數(shù)字,等價(jià)于[0-9]
\D 匹配一個(gè)數(shù)字,等價(jià)于[^0-9]
\w 匹配一個(gè)單字字符(字母、數(shù)字或者下劃線)等價(jià)于[A-Za-z0-9_],例如, /\w/ 匹配 "apple," 中的 'a',"$5.28,"中的 '5' 和 "3D." 中的 '3'。 \W匹配一個(gè)非單字字符。等價(jià)于[^A-Za-z0-9_],例如, /\W/ 或者 /[^A-Za-z0-9_]/ 匹配 "50%." 中的 '%'。
\W 匹配一個(gè)非單字字符。等價(jià)于[^A-Za-z0-9_],例如, /\W/ 或者 /[^A-Za-z0-9_]/ 匹配 "50%." 中的 '%'。
^ 匹配字符串的開(kāi)始用在[]括號(hào)里面表示排除,/^A/ 并不會(huì)匹配 "an A" 中的 'A',但是會(huì)匹配 "An E" 中的 'A'。
$ 匹配字符串的結(jié)束。例如,/t$/ 并不會(huì)匹配 "eater" 中的 't',但是會(huì)匹配 "eat" 中的 't'。 QQ號(hào)必須為5位到12位數(shù)字時(shí),可以使用:^\d{5,12}$

我們發(fā)現(xiàn)\W加大寫字母都是表示相反的意思。

2.分組符([],(),{});

字符 含義
() 如果想要重復(fù)多個(gè)字符該怎么辦?你可以用小括號(hào)來(lái)指定子表達(dá)式(也叫做分組),然后你就可以指定這個(gè)子表達(dá)式的重復(fù)次數(shù)了。eg: (\d{1,3}\.){3}\d{1,3}是一個(gè)簡(jiǎn)單的IP地址匹配表達(dá)式。要理解這個(gè)表達(dá)式,請(qǐng)按下列順序分析它:\d{1,3}匹配1到3位的數(shù)字,(\d{1,3}\.){3}匹配三位數(shù)字加上一個(gè)英文句號(hào)(這個(gè)整體也就是這個(gè)分組)重復(fù)3次,最后再加上一個(gè)一到三位的數(shù)字(\d{1,3})。
[] 代表一個(gè)字符集合。匹配方括號(hào)的中任意字符,包括轉(zhuǎn)義序列。你可以使用破折號(hào)(-)來(lái)指定一個(gè)字符范圍。對(duì)于點(diǎn)(.)和星號(hào)(*)這樣的特殊符號(hào)在一個(gè)字符集中沒(méi)有特殊的意義。他們不必進(jìn)行轉(zhuǎn)義,不過(guò)轉(zhuǎn)義也是起作用的。例如,[abcd] 和[a-d]是一樣的。他們都匹配"brisket"中得‘b',也都匹配“city”中的‘c'。/[a-z.]+/ 和/[\w.]+/都匹配“test.i.ng”中得所有字符。
{} 表示量詞的范圍的。

3.修飾符(i,g,m);

字符 含義
i 忽略大小寫
g 執(zhí)行全局匹配
m 執(zhí)行多行匹配

4.量詞(*,?,+,-,{n,m},?=n,?!=n);

字符 含義
* 匹配任意次,.*連在一起就意味著任意數(shù)量的不包含換行的字符。等價(jià)于{0,}
+ 匹配前面一個(gè)表達(dá)式1次或者多次。等價(jià)于 {1,}。
? 匹配前面一個(gè)表達(dá)式0次或者1次。等價(jià)于 {0,1}。
{n,m} 匹配n到m次
x(?=y) 匹配'x'僅僅當(dāng)'x'后面跟著'y'.這種叫做正向肯定查找。 例如,/Jack(?=Sprat)/會(huì)匹配到'Jack'僅僅當(dāng)它后面跟著'Sprat'。/Jack(?=Sprat|Frost)/匹配‘Jack'僅僅當(dāng)它后面跟著'Sprat'或者是‘Frost'。但是‘Sprat'和‘Frost'都不是匹配結(jié)果的一部分。
x(?!y) 匹配'x'僅僅當(dāng)'x'后面不跟著'y',這個(gè)叫做正向否定查找。 例如,/\d+(?!\.)/匹配一個(gè)數(shù)字僅僅當(dāng)這個(gè)數(shù)字后面沒(méi)有跟小數(shù)點(diǎn)的時(shí)候。正則表達(dá)式/\d+(?!\.)/.exec("3.141")匹配‘141'但是不是‘3.141'

實(shí)例解析:

var reg = /\(?0\d{2}[) -]?\d{8}/

“(”和“)”也是元字符,后面的分組節(jié)里會(huì)提到,所以在這里需要使用轉(zhuǎn)義。
這個(gè)表達(dá)式可以匹配幾種格式的電話號(hào)碼,像(010)88886666,或022-22334455,或02912345678等。我們對(duì)它進(jìn)行一些分析吧:首先是一個(gè)轉(zhuǎn)義字符\(,它能出現(xiàn)0次或1次(?),然后是一個(gè)0,后面跟著2個(gè)數(shù)字(\d{2}),然后是)或-或空格中的一個(gè),它出現(xiàn)1次或不出現(xiàn)(?),最后是8個(gè)數(shù)字(\d{8})。

以下通過(guò)實(shí)例來(lái)講解RegExp:

需求一:在一句話英文中匹配一個(gè)hi的單詞。

var str = 'Hi RegExp I love you so much Hi Hi hi';
var reg = new RegExp("\\bhi\\b","gi");//g是一個(gè)修飾符,表示全局匹配。\b是一個(gè)元字符,代表單詞邊界,匹配單詞的開(kāi)頭和結(jié)尾。
//直接量語(yǔ)法:
reg2 = /\bhi\b/gi;
console.log(str.match(reg2));//['hi','hi','hi','hi']
//升級(jí)
//匹配hi后面不遠(yuǎn)處跟著一個(gè)lucy
var strlc = /\bhi\b.*\blucy\b/;
var luch = 'hi welcome to beijing lucy!!!';
console.log(luch.match(strlc));

需求二:在一句話英文中匹配一個(gè)hi的單詞。

var reg = /0\d\d\d-\d\d\d\d\d\d\d\d/;//\d代表一個(gè)數(shù)字,等價(jià)于[0-9],\D匹配一個(gè)非數(shù)字字符,等價(jià)于[^0-9]
var tel = "0123-887523146";
console.log(tel.match(reg));//0123-88752314;
//這個(gè)連續(xù)寫多次的方法很笨哎,所以引進(jìn)了變量。
regTel = /0\d{3}-\d{8}/;
console.log(tel.match(regTel));//0123-88752314;

需求三:寫一個(gè)清除字符串前后空格的正則表達(dá)式。

String.prototype.trim = function(){return this.replace(/(^\s*)|(\s*$)/g, "");}
var str2 = " hi space "http://這里前后共有兩個(gè)空格
console.log(str2.length);//14
console.log(str2.trim().length);//8
console.log(str2.trim());//hi space

需求四:匹配一個(gè)郵箱。

var eReg = /\S*@\S*\.\S*/;
console.log(eReg.test('873619879@qq.com'))//true

參考文章:

http://www.fzitv.net/books/513871.html
https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Guide/Regular_Expressions#
//www.fzitv.net/article/72867.htm
http://www.fzitv.net/article/107796.htm

PS:這里再為大家提供2款非常方便的正則表達(dá)式工具供大家參考使用:

JavaScript正則表達(dá)式在線測(cè)試工具:
http://tools.jb51.net/regex/javascript

正則表達(dá)式在線生成工具:
http://tools.jb51.net/regex/create_reg

更多關(guān)于JavaScript相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《JavaScript正則表達(dá)式技巧大全》、《JavaScript替換操作技巧總結(jié)》、《JavaScript查找算法技巧總結(jié)》、《JavaScript數(shù)據(jù)結(jié)構(gòu)與算法技巧總結(jié)》、《JavaScript遍歷算法與技巧總結(jié)》、《JavaScript中json操作技巧總結(jié)》、《JavaScript錯(cuò)誤與調(diào)試技巧總結(jié)》及《JavaScript數(shù)學(xué)運(yùn)算用法總結(jié)

希望本文所述對(duì)大家JavaScript程序設(shè)計(jì)有所幫助。

相關(guān)文章

  • 純js實(shí)現(xiàn)圖片勻速淡入淡出效果

    純js實(shí)現(xiàn)圖片勻速淡入淡出效果

    這篇文章主要為大家詳細(xì)介紹了純js實(shí)現(xiàn)圖片勻速淡入淡出效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-08-08
  • JS中forEach()和map()的區(qū)別講解

    JS中forEach()和map()的區(qū)別講解

    forEach和map方法都是基于數(shù)組的迭代器實(shí)現(xiàn)的,它們的主要區(qū)別在于對(duì)回調(diào)函數(shù)的處理方式,這篇文章主要介紹了JS中forEach()和map()的區(qū)別,需要的朋友可以參考下
    2024-02-02
  • JavaScript實(shí)現(xiàn)Fly Bird小游戲

    JavaScript實(shí)現(xiàn)Fly Bird小游戲

    這篇文章主要為大家詳細(xì)介紹了JavaScript實(shí)現(xiàn)Fly Bird小游戲的制作方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-12-12
  • JS實(shí)現(xiàn)簡(jiǎn)單的點(diǎn)贊與踩功能示例

    JS實(shí)現(xiàn)簡(jiǎn)單的點(diǎn)贊與踩功能示例

    這篇文章主要介紹了JS實(shí)現(xiàn)簡(jiǎn)單的點(diǎn)贊與踩功能,涉及javascript針對(duì)頁(yè)面元素動(dòng)態(tài)操作相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下
    2018-12-12
  • 前端判斷頁(yè)面是在PC端還是移動(dòng)端打開(kāi)四種方法

    前端判斷頁(yè)面是在PC端還是移動(dòng)端打開(kāi)四種方法

    本文介紹幾種在前端開(kāi)發(fā)中用于判斷用戶設(shè)備類型(PC端或移動(dòng)端)的方法,包括使用navigator.userAgent、媒體查詢、第三方庫(kù)detect.js和Vue框架插件vue-device-detect,這些方法有助于在開(kāi)發(fā)中處理設(shè)備適配和頁(yè)面權(quán)限問(wèn)題,需要的朋友可以參考下
    2024-10-10
  • js判斷PC端與移動(dòng)端跳轉(zhuǎn)

    js判斷PC端與移動(dòng)端跳轉(zhuǎn)

    本文主要介紹了js判斷PC端與移動(dòng)端跳轉(zhuǎn)的方法,具有很好的參考價(jià)值。下面跟著小編一起來(lái)看下吧
    2017-03-03
  • Javascript實(shí)現(xiàn)時(shí)間倒計(jì)時(shí)效果

    Javascript實(shí)現(xiàn)時(shí)間倒計(jì)時(shí)效果

    這篇文章主要為大家詳細(xì)介紹了Javascript實(shí)現(xiàn)時(shí)間倒計(jì)時(shí)效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-07-07
  • ES6中Object.assign方法使用詳解

    ES6中Object.assign方法使用詳解

    這篇文章主要給大家介紹了關(guān)于ES6中Object.assign方法使用的相關(guān)資料,Object.assign可以用來(lái)處理數(shù)組,但是會(huì)把數(shù)組視為對(duì)象,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2024-06-06
  • 微信小程序原生自定義彈窗效果

    微信小程序原生自定義彈窗效果

    這篇文章主要為大家詳細(xì)介紹了微信小程序原生自定義彈窗效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-07-07
  • javascript如何使用bind指定接收者

    javascript如何使用bind指定接收者

    這篇文章主要介紹了javascript如何使用bind指定接收者,需要的朋友可以參考下
    2014-05-05

最新評(píng)論

富裕县| 定安县| 武鸣县| 册亨县| 外汇| 毕节市| 尼玛县| 宁南县| 璧山县| 什邡市| 漯河市| 临汾市| 昌吉市| 格尔木市| 洪雅县| 松江区| 卓尼县| 连山| 平远县| 郴州市| 平阳县| 宝鸡市| 临湘市| 九台市| 水富县| 吴桥县| 淅川县| 凤翔县| 定边县| 泰兴市| 和龙市| 阆中市| 四川省| 马龙县| 牟定县| 东海县| 成安县| 平定县| 南宫市| 沾益县| 临清市|