欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

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

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

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

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

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

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

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

字符 含義
() 如果想要重復(fù)多個字符該怎么辦?你可以用小括號來指定子表達(dá)式(也叫做分組),然后你就可以指定這個子表達(dá)式的重復(fù)次數(shù)了。eg: (\d{1,3}\.){3}\d{1,3}是一個簡單的IP地址匹配表達(dá)式。要理解這個表達(dá)式,請按下列順序分析它:\d{1,3}匹配1到3位的數(shù)字,(\d{1,3}\.){3}匹配三位數(shù)字加上一個英文句號(這個整體也就是這個分組)重復(fù)3次,最后再加上一個一到三位的數(shù)字(\d{1,3})。
[] 代表一個字符集合。匹配方括號的中任意字符,包括轉(zhuǎn)義序列。你可以使用破折號(-)來指定一個字符范圍。對于點(diǎn)(.)和星號(*)這樣的特殊符號在一個字符集中沒有特殊的意義。他們不必進(jìn)行轉(zhuǎn)義,不過轉(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ù)量的不包含換行的字符。等價于{0,}
+ 匹配前面一個表達(dá)式1次或者多次。等價于 {1,}。
? 匹配前面一個表達(dá)式0次或者1次。等價于 {0,1}。
{n,m} 匹配n到m次
x(?=y) 匹配'x'僅僅當(dāng)'x'后面跟著'y'.這種叫做正向肯定查找。 例如,/Jack(?=Sprat)/會匹配到'Jack'僅僅當(dāng)它后面跟著'Sprat'。/Jack(?=Sprat|Frost)/匹配‘Jack'僅僅當(dāng)它后面跟著'Sprat'或者是‘Frost'。但是‘Sprat'和‘Frost'都不是匹配結(jié)果的一部分。
x(?!y) 匹配'x'僅僅當(dāng)'x'后面不跟著'y',這個叫做正向否定查找。 例如,/\d+(?!\.)/匹配一個數(shù)字僅僅當(dāng)這個數(shù)字后面沒有跟小數(shù)點(diǎn)的時候。正則表達(dá)式/\d+(?!\.)/.exec("3.141")匹配‘141'但是不是‘3.141'

實(shí)例解析:

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

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

以下通過實(shí)例來講解RegExp:

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

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

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

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

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

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

需求四:匹配一個郵箱。

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

參考文章:

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

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

JavaScript正則表達(dá)式在線測試工具:
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錯誤與調(diào)試技巧總結(jié)》及《JavaScript數(shù)學(xué)運(yùn)算用法總結(jié)

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

相關(guān)文章

  • JavaScript中的事件與異常捕獲詳析

    JavaScript中的事件與異常捕獲詳析

    這篇文章主要給大家介紹了關(guān)于JavaScript中事件與異常捕獲的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-02-02
  • 原生JS無縫滑動輪播圖

    原生JS無縫滑動輪播圖

    這篇文章主要為大家詳細(xì)介紹了原生JS實(shí)現(xiàn)淡出淡入輪播圖,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-10-10
  • JS正則表達(dá)式詳解及身份證號碼驗(yàn)證(簡易版)

    JS正則表達(dá)式詳解及身份證號碼驗(yàn)證(簡易版)

    在做用戶實(shí)名驗(yàn)證時,常會用到身份證號碼的正則表達(dá)式及校驗(yàn)方案,下面這篇文章主要給大家介紹了關(guān)于JS正則表達(dá)式及身份證號碼驗(yàn)證的相關(guān)資料,需要的朋友可以參考下
    2022-07-07
  • 用JavaScript實(shí)現(xiàn)簡單網(wǎng)頁時鐘

    用JavaScript實(shí)現(xiàn)簡單網(wǎng)頁時鐘

    這篇文章主要為大家詳細(xì)介紹了用JavaScript實(shí)現(xiàn)簡單網(wǎng)頁時鐘,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-08-08
  • JS 獲取瀏覽器和屏幕寬高等信息的實(shí)現(xiàn)思路及代碼

    JS 獲取瀏覽器和屏幕寬高等信息的實(shí)現(xiàn)思路及代碼

    本節(jié)代碼主要使用了Document對象關(guān)于窗口的一些屬性,附實(shí)現(xiàn)代碼及源程序解決,有需求的朋友可以參考下
    2013-07-07
  • 讓JavaScript擁有類似Lambda表達(dá)式編程能力的方法

    讓JavaScript擁有類似Lambda表達(dá)式編程能力的方法

    在前幾天的博文中我發(fā)布了一個可以自定義頁碼呈現(xiàn)方式的組件,有C#和JavaScript兩個版本。
    2010-09-09
  • JS實(shí)現(xiàn)一鍵復(fù)制

    JS實(shí)現(xiàn)一鍵復(fù)制

    這篇文章主要為大家詳細(xì)介紹了js實(shí)現(xiàn)點(diǎn)擊按鈕復(fù)制文本,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-07-07
  • 學(xué)習(xí)JSON.stringify的9大特性和轉(zhuǎn)換規(guī)則

    學(xué)習(xí)JSON.stringify的9大特性和轉(zhuǎn)換規(guī)則

    本文介紹JSON.stringify9大特性和轉(zhuǎn)換規(guī)則,JSON.stringify()方法將一個JavaScript對象或值轉(zhuǎn)換為?JSON?字符串,如果指定了一個replacer?函數(shù),則可以選擇性地替換值,或者指定的replacer是數(shù)組,則可選擇性地僅包含數(shù)組指定的屬性,更多內(nèi)容需要的小火煸可以參考下面溫行內(nèi)容
    2022-02-02
  • JS樣式獲取的封裝方法實(shí)例詳解

    JS樣式獲取的封裝方法實(shí)例詳解

    這篇文章主要介紹了JS樣式獲取的封裝方法,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-09-09

最新評論