摘要:一定義正則表達(dá)式,使用單個(gè)字符串來描述匹配一系列符合某個(gè)句法規(guī)則的字符串。沒有找到則返回分割標(biāo)識符參數(shù),可以是多個(gè)字符或一個(gè)正則表達(dá)式限制返回元素的個(gè)數(shù)五參考資料高級程序設(shè)計(jì)正則表達(dá)式課程,
一. 定義
正則表達(dá)式(Regular Expression),使用單個(gè)字符串來描述、匹配一系列符合某個(gè)句法規(guī)則的字符串。
二. 基本語法 元字符正則表達(dá)式中有特殊含義的非字母字符
字符類[]可以構(gòu)建一個(gè)類,比如[abc],匹配含有a或b或c
字符類取反
[^]表示匹配一個(gè)未列出的字符, 而不是匹配列出的字符
var reg=/[^ab]/g; var string="acdadbb"; string.replace(reg,"A"); //結(jié)果為"aAAaAbb"范圍類
[],匹配一個(gè)范圍,在其類內(nèi)部是可以連寫的,例如
[a-zA-Z] //匹配26個(gè)字母的大小寫預(yù)定義類
.匹配除回車符和換行符之外的所有字符
d匹配數(shù)字字符
D匹配非數(shù)字字符
s匹配空白符
S匹配非空白符
w匹配單詞字符(字母、數(shù)字下劃線)
W匹配非單詞字符
注意大小寫的區(qū)分
^開始
$結(jié)束
單詞邊界
B非單詞邊界
量詞?匹配之前緊鄰的元素,這個(gè)元素可以不出現(xiàn),且匹配成功(最多出現(xiàn)一次)
+ 表示之前緊鄰的元素出現(xiàn)一次或者多次,無法進(jìn)行一次匹配時(shí),會(huì)報(bào)告匹配失敗(最少出現(xiàn)一次)
*之前緊鄰的元素出現(xiàn)任意多次或者不出現(xiàn)
字符組里面的一些字符不是元字符。(任意次)
{n} 出現(xiàn)n次
{n,m}出現(xiàn)n到m次
{n,}至少出現(xiàn)n次
分組1.()
//匹配一個(gè)字母加一個(gè)數(shù)字的前兩個(gè)組合 var reg1=/[a-z]d{2}/g; var reg2=/([a-z]d){2}/g; //增加() var string="a1c2d3adbb"; string.replace(reg1,"A"); //結(jié)果為"a1c2d3adbb",沒有改變,因?yàn)槠ヅ涞氖亲帜讣由铣霈F(xiàn)2次的數(shù)字 string.replace(reg2,"A"); //結(jié)果為"Ad3adbb""
2.或|
var reg=/h(o|i)t/g; var string="hothithat"; string.replace(reg,"A"); //結(jié)果為AAhat
3.反向引用
例如日期格式的轉(zhuǎn)換,由2016-08-16轉(zhuǎn)換為08/16/2016
var reg=/(d{4})-(d{2})-(d{2})/g; var string="2016-08-16"; string.replace(reg,"$2/$3/$1"); //結(jié)果為08/16/2016
其中$1表示第一組括號匹配的文本,其他類似
4.忽略分組
在分組內(nèi)加上?:
var reg=/(d{4})-(?:d{2})-(d{2})/g; var string="2016-08-16"; string.replace(reg,"$2/$3/$1"); //結(jié)果為16/$3/2016,月份已經(jīng)被忽略,無法通過$加數(shù)字進(jìn)行訪問前瞻
文本尾部方向,為前
正向前瞻: exp(?=assert)
負(fù)向前瞻: exp(?!assert)
前瞻:匹配到規(guī)則的時(shí)候,向前檢查是否符合斷言,javaScript不支持后顧。
var reg=/w(?=d)/g; //找到字母后,判斷后面是不是有數(shù)字,有的話才符合,替換掉這個(gè)字母,但是數(shù)字不會(huì)替換 var string="h2othi2"; string.replace(reg,"A"); //結(jié)果為A2othA2三. 匹配模式 貪婪模式
極可能多地匹配
var reg=/d{3,6}/g; var string="123456789"; string.replace(reg,"A"); //結(jié)果為"A789",盡可能多的匹配非貪婪模式
讓正則表達(dá)式盡可能少的匹配,一旦匹配成功就不再繼續(xù)嘗試。方式是在量詞后加上?
var reg=/d{3,6}?/g; var string="123456789"; string.replace(reg,"A"); //結(jié)果為"AAA",盡可能多的匹配四. RegExp對象 創(chuàng)建方法
有兩種方法可以創(chuàng)建RegExp對象
a.顯式構(gòu)造函數(shù):
var reg=new RegExp("pattern"[,"flag"]);
b.隱式構(gòu)造函數(shù):
var reg=/pattern/[flags];
其中,flags可以是一些標(biāo)志字符的組合
g 為全局標(biāo)志,將對所有匹配的部分起作用,如果不設(shè)置,僅搜索和替換最早匹配的內(nèi)容
i為 忽略大小寫的標(biāo)志,如果設(shè)置,忽略大小寫
m 為多行標(biāo)志,如果設(shè)置,“^”還可以與被搜索字符串的 n 或 r 之后的位置進(jìn)行匹配
例如:
/ab+c/i; new RegExp("ab+c","i");RegExp對象的屬性
global:布爾值
ignoreCase:布爾值
lastIndex:整數(shù),表示開始搜索下一個(gè)匹配項(xiàng)的字符位置
multiLine:布爾值
source:正則表達(dá)式的字符串表示
RegExp對象的方法 execrgExp.exec(str)
返回值:如果沒有找到匹配返回null,如果找到則返回一個(gè)數(shù)組
返回的數(shù)組有三個(gè)屬性,分別是input、index和lastIndex
input包含了查找的字符串, index屬性包含了整個(gè)被查找字符串中被匹配的子字符串的位置, lastIndex屬性中包含了最后一次匹配中最后一個(gè)字符的下一個(gè)位置test
rgexp.test(str)
返回值:如果存在一個(gè)模式,返回true
matchstringObj.match(rgExp)
返回值:如果沒有找到匹配返回null,如果找到則返回一個(gè)數(shù)組
返回的數(shù)組有三個(gè)屬性,分別是input、index和lastIndex,input包含了查找的字符串,index屬性包含了整個(gè)被查找字符串中被匹配的子字符串的位置,lastIndex屬性中包含了最后一次匹配中最后一個(gè)字符的下一個(gè)位置
stringObj.search(rgExp);
返回值:如果存在,則返回 一個(gè)整數(shù)值,指明這個(gè)匹配距離字符串開始的偏移位置。
沒有找到則返回-1
replace(rgExp,replaceText);split
split([separator[,limit]])
separator 分割標(biāo)識符參數(shù),可以是多個(gè)字符或一個(gè)正則表達(dá)式
limit 限制返回元素的個(gè)數(shù)
《JavaScript高級程序設(shè)計(jì)》
《JavaScript正則表達(dá)式》課程, Samaritan89
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/80069.html
摘要:本文內(nèi)容共正則表達(dá)式火拼系列正則表達(dá)式回溯法原理學(xué)習(xí)正則表達(dá)式,是需要懂點(diǎn)兒匹配原理的。正則表達(dá)式迷你書問世了讓幫你生成和解析參數(shù)字符串最全正則表達(dá)式總結(jié)驗(yàn)證號手機(jī)號中文郵編身份證地址等是正則表達(dá)式的縮寫,作用是對字符串執(zhí)行模式匹配。 JS 的正則表達(dá)式 正則表達(dá)式 一種幾乎可以在所有的程序設(shè)計(jì)語言里和所有的計(jì)算機(jī)平臺上使用的文字處理工具。它可以用來查找特定的信息(搜索),也可以用來查...
摘要:構(gòu)造函數(shù)可以有兩個(gè)字符串參數(shù),第一個(gè)參數(shù)包含正則表達(dá)式的主體部分。只讀的布爾值,說明這個(gè)正則表達(dá)式是否帶有修飾符。中正則的擴(kuò)展構(gòu)造函數(shù)在中,只能接受字符串作為參數(shù),允許其直接接受正則表達(dá)式作為參數(shù)。 上文傳送門:初探正則表達(dá)式 正則表達(dá)式是一個(gè)描述字符模式的對象,JavaScript 的 RegExp 類表示正則表達(dá)式,String 和 RegExp 都定義了方法,后者使用正則表達(dá)式進(jìn)...
摘要:正則表達(dá)式一直是里比較難以掌握的點(diǎn)。在中創(chuàng)建正則的兩種方式使用字面量這就是正則表達(dá)式的字面量語法,表示正則表達(dá)式的模式,為正則表達(dá)式的標(biāo)志。字面量形式的正則表達(dá)式一般使用較多,也推薦大家盡可能使用這種形式,簡潔易讀,符合正常的使用習(xí)慣。 正則表達(dá)式一直是js里比較難以掌握的點(diǎn)。 看不懂,學(xué)不會(huì),記不住。 每次需要用到正則的時(shí)候,都需要再去查找資料。 今天花時(shí)間把正則的知識點(diǎn)總結(jié)下,希望...
摘要:選擇分組和引用正則表達(dá)式的語法還包括指定選擇項(xiàng)子表達(dá)式分組和引用前一子表達(dá)式的特殊字符。帶圓括號的表達(dá)式的另一個(gè)用途是允許在同一正則表達(dá)式的后部引用前面的子表達(dá)式。 正則表達(dá)式(regular expression)是一個(gè)描述字符模式的對象。JavaScript的 RegExp類 表示正則表達(dá)式,String和RegExp都定義了方法,后者使用正則表達(dá)式進(jìn) 行強(qiáng)大的模式匹配和文本檢索與...
摘要:最全正則表達(dá)式總結(jié)驗(yàn)證號手機(jī)號中文郵編身份證地址等是正則表達(dá)式的縮寫,作用是對字符串執(zhí)行模式匹配。學(xué)習(xí)目標(biāo)了解正則表達(dá)式語法在中使用正則表達(dá)式在中使 JS高級技巧 本篇是看的《JS高級程序設(shè)計(jì)》第23章《高級技巧》做的讀書分享。本篇按照書里的思路根據(jù)自己的理解和經(jīng)驗(yàn),進(jìn)行擴(kuò)展延伸,同時(shí)指出書里的一些問題。將會(huì)討論安全的類型檢測、惰性載入函數(shù)、凍結(jié)對象、定時(shí)器等話題。1. 安全的類型檢測...
閱讀 1067·2021-11-22 15:35
閱讀 1703·2021-10-26 09:49
閱讀 3244·2021-09-02 15:11
閱讀 2092·2019-08-30 15:53
閱讀 2644·2019-08-30 15:53
閱讀 2940·2019-08-30 14:11
閱讀 3539·2019-08-30 12:59
閱讀 3252·2019-08-30 12:53