日韩欧美国产精品免费一二-日韩欧美国产精品亚洲二区-日韩欧美国产精品专区-日韩欧美国产另-日韩欧美国产免费看-日韩欧美国产免费看清风阁

LOGO OA教程 ERP教程 模切知識交流 PMS教程 CRM教程 開發(fā)文檔 其他文檔  
 
網(wǎng)站管理員

JS技巧:Javascript正則表達(dá)式基礎(chǔ)

admin
2010年8月17日 23:30 本文熱度 4189
RegExp對象的語義和使用:

檢查字符串匹配

獲取字符串中的部分內(nèi)容

在原字符串的基礎(chǔ)上構(gòu)建一個新的字符串(包括添加、刪除和修改)

構(gòu)建一個RegExp對象主要有兩種方法:

使用literal,如/\w/g

使用構(gòu)造函數(shù),如 new RegExp(/\w/)

構(gòu)建RegExp對象有以下幾個注意點:

literal常用來構(gòu)建非runtime產(chǎn)生的靜態(tài)的RegExp對象

literal之后可以直接添加flag用來對匹配字符串的執(zhí)行結(jié)果進(jìn)行限制,常用flag包括g和i,分別用來表示全局匹配(global)和忽略大小寫匹配(case-insensitive)

RegExp構(gòu)造函數(shù)的第一個參數(shù)提供該對象的pattern,如果pattern是一個RegExp literal,那么就不能提供第二個參數(shù)(即指定flag)。如果pattern是一個string,那么可以使用第二個參數(shù)

RegExp構(gòu)造函數(shù)常用于構(gòu)建runtime產(chǎn)生的動態(tài)RegExp對象

RegExp的pattern為string時所有l(wèi)iteral中的”\”都必須寫成”\\”,因為”\”在string中需要被轉(zhuǎn)義

以上兩種方法構(gòu)建的都一個javascript對象,因此/\w/ == /\w/返回false

RegExp對象相關(guān)的功能:

要檢查字符串的匹配,可以使用 regExp.test(string) 方法,該方法檢查string是否匹配regExp提供的pattern。還可以使用 string.search(regExp)方法,如果兩者不匹配將會返回-1

要獲取字符串中的部分內(nèi)容,可以使用 regExp.exec(string) 方法,也可以使用string.match(regExp)方法

要在原有字符串上構(gòu)建一個新的字符串,通常使用string.replace(searchValue, replaceValue)方法

RegExp對象中提供pattern的語義:

RegExp可以定義多個Alternative用”|”分割,該運算的優(yōu)先級最低,因此如果存在”|”,那么它首先把RegExp分割成幾大部分

每個Alternative由多個term組成,term分為assertion(用于位置限定),atom(匹配的單元),帶Quantifier(修飾符)的atom

assertion分為”^”用于匹配字符串開頭,在multiInput(即flag包含m時),也可以匹配一行的開頭,”$”用于匹配字符串結(jié)尾,在multiInput(即flag包含m時),也可以匹配一行的結(jié)尾,”\b”用于匹配一個\w和\W間隔,注意它并不匹配任何字符串中的內(nèi)容,而只是用來判斷一個位置的匹配情況

atom的情況比較復(fù)雜,我們首先來看atom的Quantifier,可以包含* + ? {n} {m,} {m,n},其中*表示atom可以有0次或以上的重復(fù),+表示1次或以上的重復(fù),?表示0或1次,{n}表示恰巧n次重復(fù),{m,}表示m或以上的重復(fù),{m,n}表示重復(fù)次數(shù)在m和n之間(包含m和n),在以上的Quantifier之后還可以跟一個?用來啟動non-greedy模式,我將在后文中說明這種模式的意義。

atom包含patternCharacter(普通字符,即在pattern中沒有特殊語義的字符,匹配時將按照字面進(jìn)行匹配)

“.” 匹配所有非line-terminator字符

\AtomEscape 包含數(shù)字型 \1(用于引用之前的括號中的匹配成功的內(nèi)容)。一些字符的引用\n \f \r \t \v \xNN \uXXXX \cX等。一些特殊含義的字符,如\d \D \s \S \w \W

CharacterClass,包含[...]和[^...]兩種形式。其中可以包含很多字符,如-、 \n等字符引用、\b、\d等特殊含義字符。注意如果”-”左右有字符,那么語義變?yōu)閺哪骋蛔址侥骋蛔址H绻?”左或者右沒有字符,那么”-”僅表示dash字符。

(group),以上模式進(jìn)行g(shù)roup就可以在group之后使用Quantifier修飾

(?:group),僅作為group使用,而不會記錄group匹配的內(nèi)容從而不算在\1..\n中

(?=group),要求匹配但不會在返回的匹配string中包含group匹配的內(nèi)容

(?!group),要求不匹配且不會在返回的匹配string中包含group匹配的內(nèi)容

下面我要講一下RegExp的兩個比較重要的運作模式:

匹配Alternative總是從左到右,如果遇到第一個匹配的就不再嘗試之后的匹配,如

/ab|abc/.exec("abc")

以上字符串”abc”僅匹配pattern中的ab,而不會去匹配abc

匹配時總是一般不在Quantifier后添加?的都使用greedy模式,添加?后使用non-greedy模式,如

/\w+bc/.exec("abcbcbc")

匹配時\w+總是先盡可能多的匹配(即greedy模式),因此它會匹配”abcbcbc”,如果改為

/\w+?bc/.exec("abcbcbc")

那么他會盡可能少的匹配(即non-greedy模式),因此僅匹配”abc”。

對于一般的解析字符串的要求,一般可以使用exec或match方法解析,如果字符串很大那么往往需要使用循環(huán)結(jié)構(gòu)進(jìn)行解析,配合while等語句,RegExp是很強大的。

對于要將現(xiàn)有的一個字符串通過修改轉(zhuǎn)變?yōu)榱硪粋€字符串時,一般總是使用replace方法,這個方法是我覺得RegExp中最重要的方法,它的多態(tài)性使他具有多種形式,幾乎能夠滿足所有修改字符串的需求。

該文章在 2010/8/17 23:30:28 編輯過
關(guān)鍵字查詢
相關(guān)文章
正在查詢...
點晴ERP是一款針對中小制造業(yè)的專業(yè)生產(chǎn)管理軟件系統(tǒng),系統(tǒng)成熟度和易用性得到了國內(nèi)大量中小企業(yè)的青睞。
點晴PMS碼頭管理系統(tǒng)主要針對港口碼頭集裝箱與散貨日常運作、調(diào)度、堆場、車隊、財務(wù)費用、相關(guān)報表等業(yè)務(wù)管理,結(jié)合碼頭的業(yè)務(wù)特點,圍繞調(diào)度、堆場作業(yè)而開發(fā)的。集技術(shù)的先進(jìn)性、管理的有效性于一體,是物流碼頭及其他港口類企業(yè)的高效ERP管理信息系統(tǒng)。
點晴WMS倉儲管理系統(tǒng)提供了貨物產(chǎn)品管理,銷售管理,采購管理,倉儲管理,倉庫管理,保質(zhì)期管理,貨位管理,庫位管理,生產(chǎn)管理,WMS管理系統(tǒng),標(biāo)簽打印,條形碼,二維碼管理,批號管理軟件。
點晴免費OA是一款軟件和通用服務(wù)都免費,不限功能、不限時間、不限用戶的免費OA協(xié)同辦公管理系統(tǒng)。
Copyright 2010-2025 ClickSun All Rights Reserved

主站蜘蛛池模板: 韩国三级 | 日本一区欧美国产日韩 | 欧美巨大巨粗黑人性aaaaaa | 国产亚洲欧美日韩在线三区 | 午夜性刺激 | 免费视频专区一国产盗摄 | 国产午夜男女爽爽爽爽爽视频 | 999国内精品永久免费观看 | 免费看日产一区二区三区 | 免费观看又污又黄的网站 | 国产一区二区三区亚洲 | 亚洲精品r级在线观看网站 国产黄大片在线观看画质 欧美无砖专区一中文字幕 欧美亚日韩国产aⅴ精品中极品 | 亚洲欧美一区二区三区久本道 | 国产精品天干天干在线综合 | 日本不卡一区二区三区视频 | 国产在线一卡2卡三卡4卡免费 | 日韩一区二区三区射精 | 观看国产色 | 国产日产亚洲系列最新 | 国产高清| 日本69sex护士 | 99久热海外精品视频 | 国产激情视频一区二区三区 | 国产精品高清免费网站电影 | 国色天香精品亚洲精品 | 亚洲三级一区二区在线观看 | 一区二区日韩激情在线观看视频 | 国产精品自产拍在线观看55 | 国产亚洲视频网站 | 97国产在线视频公开免费 | 窝窝午夜看片 | 日本一区二区日本免费 | 亚洲精品欧美中文字幕 | 国产福利一区二区三区在线视频 | 亚洲三级一区二区在线观看 | 把你的香肠放入我的扇贝里 | aⅴ日本亚洲欧洲免费天堂 加勒比综合网 | 国产免费网站看v片在线观看 | 在线亚洲高清揄拍自拍一品区 | 国产亚洲精品综合在线网址 | 香蕉97超级碰|