成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專欄INFORMATION COLUMN

javascript正則表達(dá)式總結(jié)

impig33 / 2129人閱讀

摘要:如果你知道正則表達(dá)式模式將會(huì)改變,或者你事先不知道什么模式,而是從另一個(gè)來(lái)源獲取,如用戶輸入,這些情況都可以使用構(gòu)造函數(shù)。

為什么要使用正則表達(dá)式

正則表達(dá)式通過(guò)由普通字符和特殊字符組成的文字模板完成對(duì)字符串的校驗(yàn),搜索,替換。在javascript中類似這樣

/^1d{10}$/

上面的這個(gè)簡(jiǎn)單的正則用來(lái)匹配手機(jī)號(hào)
至于說(shuō)正則表達(dá)式到底有什么意義,借由《精通正則表達(dá)式》里面的一句話來(lái)概括好了。

? “如果羅列計(jì)算機(jī)軟件領(lǐng)域的偉大發(fā)明,我相信絕對(duì)不會(huì)超過(guò)二十項(xiàng),在這個(gè)名單當(dāng)中,當(dāng)然應(yīng)該包括分組交換網(wǎng)絡(luò),Web,Lisp,哈希算法,UNIX,編譯技術(shù),關(guān)系模型,面向?qū)ο螅琗ML這些大名鼎鼎的家伙,而正則表達(dá)式也絕對(duì)不應(yīng)該被漏掉。
?對(duì)很多實(shí)際工作而言,正則表達(dá)式簡(jiǎn)直是靈丹妙藥,能夠成百倍的提高開(kāi)發(fā)效率和程序質(zhì)量?!?/pre> 正則表達(dá)式的生成

在javascript中生成正則表達(dá)式的方式有兩種

調(diào)用RegExp對(duì)象的構(gòu)造函數(shù)

var reg = new RegExp("^[a-z]+[0-9]$", "gi")

其中第一個(gè)參數(shù)是匹配模式,第二個(gè)參數(shù)是可選參數(shù)(g, i, m),分別用于指定全局匹配、區(qū)分大小寫(xiě)的匹配和多行匹配。這種方式會(huì)在正則表達(dá)式運(yùn)行時(shí)編譯(runtime compilation)。如果你知道正則表達(dá)式模式將會(huì)改變,或者你事先不知道什么模式,而是從另一個(gè)來(lái)源獲取,如用戶輸入,這些情況都可以使用構(gòu)造函數(shù)。

使用正則表達(dá)式字面值,將匹配模式封閉在兩個(gè)斜杠中

var reg = /^[a-z]+[0-9]$/gi

當(dāng)表達(dá)式被賦值時(shí),字面量形式提供正則表達(dá)式的編譯(compilation),當(dāng)正則表達(dá)式保持為常量時(shí)一般使用字面量方式。例如當(dāng)你在循環(huán)中使用字面量構(gòu)造一個(gè)正則表達(dá)式時(shí),正則表達(dá)式不會(huì)在每一次迭代中都被重新編譯(recompiled)

正則表達(dá)式的組成

正則表達(dá)式的文字模板是有很多不同類型的字符組成的,包括:
元字符,轉(zhuǎn)義字符,限定符,字符組,或結(jié)構(gòu),括號(hào)分組

元字符
字符 含義
. 匹配除了換行符(n)以外的所有字符
w 匹配字母,數(shù)字,下劃線
W 匹配除了字母,數(shù)字,下劃線以外的其他字符
d 匹配數(shù)字
D 匹配除了數(shù)字以外的其他字符
s 匹配任意的空白符(f, n, r, t, v)
S 匹配空白符以外的任意字符
b 匹配單詞的開(kāi)始或者結(jié)束
B 匹配單詞的非開(kāi)始或者結(jié)束
^ 匹配行首
$ 匹配行尾
轉(zhuǎn)義字符

* + ? | { [ ( ) ] }^ $ . # 和 空白 這些字符都是需要轉(zhuǎn)義的。例如我們要匹配{。

{
限定符
字符 含義
* 匹配零次至多次
+ 匹配一次至多次
匹配零次或一次
{2,} 至少匹配兩次
{10} 匹配10次
{{2, 8}} 至少匹配兩次之多匹配八次
字符組[]

中括號(hào)字符組用來(lái)匹配括號(hào)內(nèi)的字符之一

"fasfagxfasdfyfasfz".split(/[xyz]/) //["fasfag", "fasdf", "fasf", ""]

還有一種排除性字符組

"xaxbycz".split(/[^xyz]/)   //["x", "x", "y", "z"]
或結(jié)構(gòu) |

例如c|d匹配或者d

/c|d/.test("af") // false
/c|d/.test("ad") // true
括號(hào)分組

(cd){1,} 可以匹配cdcd..等, 其中cd便是一個(gè)分組。

    /(cd){1,}$/.test("cdcd") //true
貪婪模式和非貪婪模式

默認(rèn)情況下,所有的限定詞都是貪婪模式,表示盡可能多的去捕獲字符。而在限定詞后增加“?”,則是非貪婪模式,表示盡可能少的去捕獲字符。

"ccccccd".match(/c+/) //["ccccc"], 貪婪模式, 捕獲所有
"ccccccd".match(/c+?/) //["c"], 非貪婪模式, 只捕獲到第一個(gè)
捕獲分組

在實(shí)際應(yīng)用中我們很有可能需要獲取到匹配的字符串,例如我們要將字符串"萬(wàn)里碧空飄著朵朵白云"替換成"萬(wàn)里碧空沒(méi)有一朵白云"

"萬(wàn)里碧空飄著朵朵白云".replace(/(萬(wàn)里碧空)飄著朵朵白云/, "$1沒(méi)有一朵白云")

捕獲性分組會(huì)創(chuàng)建反向引用,js中可以通過(guò) $+number 或者 "反斜杠"+number" 表示法進(jìn)行引用。

注意:

反斜杠+number這種引用可以在正則表達(dá)式中使用,可用于匹配不同位置的相同子串,例如:

"www.bai.bai.com".replace(/([a-z]+).1/, "$1") // www.bai.com
非捕獲性分組

非捕獲性分組,通常由一對(duì)括號(hào)加上”?:”加上子表達(dá)式組成,非捕獲性分組不會(huì)創(chuàng)建反向引用,就好像沒(méi)有括號(hào)一樣。捕獲性分組和無(wú)捕獲性分組在搜索效率方面也沒(méi)什么不同,沒(méi)有哪一個(gè)比另一個(gè)更快。

/^(?:d+)/
正則表達(dá)式的方法 test

檢索字符串中的指定子串,返回布爾值

/^d[a-zA-Z]{3}$/.test("1aac") // true
exec

返回一個(gè)數(shù)組,數(shù)組中的第一個(gè)條目是第一個(gè)匹配

/^d[a-zA-Z]{3}$/.exec("1aac") // ["1aac"]
String可以使用正則表達(dá)式的方法 search

返回子串的開(kāi)始位置

"a12b2334c34".search(/d{4}/) // 4
match

返回匹配到的子串

"a12b2334c34".match(/d{4}/) // ["2334"]
replace

替換匹配到的子串

"a12b2334c34".replace(/d{4}/, "cccc") // "a12bccccc34"
split

將字符串分割成數(shù)組

"a12b2334c34".split(/d{4}/)  // ["a12b", "c34"]
斷言 正向先行斷言 (?=exp)

代表字符串中的一個(gè)位置,緊接該位置之后的字符序列能夠匹配 exp

/f(?=234)/.test("123abcf234acd") //true
負(fù)向先行斷言(?!exp)

代表字符串中的一個(gè)位置,緊接該位置之后的字符序列不能匹配 exp

/f(?!234)/.test("123abcf234acd") //false
常用的正則表達(dá)式 Email 地址:
^w+([-+.]w+)*@w+([-.]w+)*.w+([-.]w+)*$
URl驗(yàn)證
[a-zA-z]+://[^s]* 或 ^http://([w-]+.)+[w-]+(/[w-./?%&=]*)?$
密碼驗(yàn)證
(?!^[0-9]+$)(?!^[A-z]+$)(?!^[^A-z0-9]+$)^[^su4e00-u9fa5]{6,16}$
郵編驗(yàn)證
[1-9]d{5}(?!d)
手機(jī)號(hào)碼驗(yàn)證
^1d{10}$
漢字驗(yàn)證
^[u4e00-u9fa5]{0,}$

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/82211.html

相關(guān)文章

  • 正則達(dá)式

    摘要:本文內(nèi)容共正則表達(dá)式火拼系列正則表達(dá)式回溯法原理學(xué)習(xí)正則表達(dá)式,是需要懂點(diǎn)兒匹配原理的。正則表達(dá)式迷你書(shū)問(wèn)世了讓幫你生成和解析參數(shù)字符串最全正則表達(dá)式總結(jié)驗(yàn)證號(hào)手機(jī)號(hào)中文郵編身份證地址等是正則表達(dá)式的縮寫(xiě),作用是對(duì)字符串執(zhí)行模式匹配。 JS 的正則表達(dá)式 正則表達(dá)式 一種幾乎可以在所有的程序設(shè)計(jì)語(yǔ)言里和所有的計(jì)算機(jī)平臺(tái)上使用的文字處理工具。它可以用來(lái)查找特定的信息(搜索),也可以用來(lái)查...

    bang590 評(píng)論0 收藏0
  • JavaScript正則達(dá)式總結(jié)

    摘要:正則表達(dá)式一直是里比較難以掌握的點(diǎn)。在中創(chuàng)建正則的兩種方式使用字面量這就是正則表達(dá)式的字面量語(yǔ)法,表示正則表達(dá)式的模式,為正則表達(dá)式的標(biāo)志。字面量形式的正則表達(dá)式一般使用較多,也推薦大家盡可能使用這種形式,簡(jiǎn)潔易讀,符合正常的使用習(xí)慣。 正則表達(dá)式一直是js里比較難以掌握的點(diǎn)。 看不懂,學(xué)不會(huì),記不住。 每次需要用到正則的時(shí)候,都需要再去查找資料。 今天花時(shí)間把正則的知識(shí)點(diǎn)總結(jié)下,希望...

    big_cat 評(píng)論0 收藏0
  • 密碼強(qiáng)度的正則達(dá)式JavaScript總結(jié)

    摘要:簡(jiǎn)言本文給出了兩個(gè)密碼強(qiáng)度的正則表達(dá)式方案,一個(gè)簡(jiǎn)單,一個(gè)更復(fù)雜和安全。要寫(xiě)出正確的正則表達(dá)式,先要定義表達(dá)式規(guī)則。重復(fù)在正則表達(dá)式中用來(lái)表示元素重復(fù)出現(xiàn)的次數(shù)。你可以根據(jù)項(xiàng)目需要,自己調(diào)整上述正則表達(dá)式。 簡(jiǎn)言 本文給出了兩個(gè)密碼強(qiáng)度的正則表達(dá)式方案,一個(gè)簡(jiǎn)單,一個(gè)更復(fù)雜和安全。并分別給出了兩個(gè)方案的解析和測(cè)試程序。一般大家可以根據(jù)自己的項(xiàng)目的實(shí)際需要,自行定義自己的密碼正則約定。 ...

    Carl 評(píng)論0 收藏0
  • JavaScript學(xué)習(xí)總結(jié)(八)正則達(dá)式

    摘要:首先推薦幾個(gè)正則表達(dá)式編輯器正則表達(dá)式是一種查找以及字符串替換操作。此表所列的常用正則表達(dá)式,除個(gè)別外均未在前后加上任何限定,請(qǐng)根據(jù)需要,自行處理。例如對(duì)而言,則采用一對(duì)引號(hào)來(lái)確定正則表達(dá)式的邊界。 這篇文章本來(lái)很早就要寫(xiě)的,拖了挺久的,現(xiàn)在整理下,供大家學(xué)習(xí)交流哈! 基本概念 正則表達(dá)式是一種文本模式,包括普通字符(例如,a 到 z 之間的字母)和特殊字符(稱為元字符)。模式描述在搜...

    trilever 評(píng)論0 收藏0
  • 正則達(dá)式

    摘要:最全正則表達(dá)式總結(jié)驗(yàn)證號(hào)手機(jī)號(hào)中文郵編身份證地址等是正則表達(dá)式的縮寫(xiě),作用是對(duì)字符串執(zhí)行模式匹配。學(xué)習(xí)目標(biāo)了解正則表達(dá)式語(yǔ)法在中使用正則表達(dá)式在中使 JS高級(jí)技巧 本篇是看的《JS高級(jí)程序設(shè)計(jì)》第23章《高級(jí)技巧》做的讀書(shū)分享。本篇按照書(shū)里的思路根據(jù)自己的理解和經(jīng)驗(yàn),進(jìn)行擴(kuò)展延伸,同時(shí)指出書(shū)里的一些問(wèn)題。將會(huì)討論安全的類型檢測(cè)、惰性載入函數(shù)、凍結(jié)對(duì)象、定時(shí)器等話題。1. 安全的類型檢測(cè)...

    yibinnn 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

閱讀需要支付1元查看
<