摘要:一定義正則表達式,使用單個字符串來描述匹配一系列符合某個句法規則的字符串。沒有找到則返回分割標識符參數,可以是多個字符或一個正則表達式限制返回元素的個數五參考資料高級程序設計正則表達式課程,
一. 定義
正則表達式(Regular Expression),使用單個字符串來描述、匹配一系列符合某個句法規則的字符串。
二. 基本語法 元字符正則表達式中有特殊含義的非字母字符
字符類[]可以構建一個類,比如[abc],匹配含有a或b或c
字符類取反
[^]表示匹配一個未列出的字符, 而不是匹配列出的字符
var reg=/[^ab]/g; var string="acdadbb"; string.replace(reg,"A"); //結果為"aAAaAbb"范圍類
[],匹配一個范圍,在其類內部是可以連寫的,例如
[a-zA-Z] //匹配26個字母的大小寫預定義類
.匹配除回車符和換行符之外的所有字符
d匹配數字字符
D匹配非數字字符
s匹配空白符
S匹配非空白符
w匹配單詞字符(字母、數字下劃線)
W匹配非單詞字符
注意大小寫的區分
^開始
$結束
單詞邊界
B非單詞邊界
量詞?匹配之前緊鄰的元素,這個元素可以不出現,且匹配成功(最多出現一次)
+ 表示之前緊鄰的元素出現一次或者多次,無法進行一次匹配時,會報告匹配失敗(最少出現一次)
*之前緊鄰的元素出現任意多次或者不出現
字符組里面的一些字符不是元字符。(任意次)
{n} 出現n次
{n,m}出現n到m次
{n,}至少出現n次
分組1.()
//匹配一個字母加一個數字的前兩個組合 var reg1=/[a-z]d{2}/g; var reg2=/([a-z]d){2}/g; //增加() var string="a1c2d3adbb"; string.replace(reg1,"A"); //結果為"a1c2d3adbb",沒有改變,因為匹配的是字母加上出現2次的數字 string.replace(reg2,"A"); //結果為"Ad3adbb""
2.或|
var reg=/h(o|i)t/g; var string="hothithat"; string.replace(reg,"A"); //結果為AAhat
3.反向引用
例如日期格式的轉換,由2016-08-16轉換為08/16/2016
var reg=/(d{4})-(d{2})-(d{2})/g; var string="2016-08-16"; string.replace(reg,"$2/$3/$1"); //結果為08/16/2016
其中$1表示第一組括號匹配的文本,其他類似
4.忽略分組
在分組內加上?:
var reg=/(d{4})-(?:d{2})-(d{2})/g; var string="2016-08-16"; string.replace(reg,"$2/$3/$1"); //結果為16/$3/2016,月份已經被忽略,無法通過$加數字進行訪問前瞻
文本尾部方向,為前
正向前瞻: exp(?=assert)
負向前瞻: exp(?!assert)
前瞻:匹配到規則的時候,向前檢查是否符合斷言,javaScript不支持后顧。
var reg=/w(?=d)/g; //找到字母后,判斷后面是不是有數字,有的話才符合,替換掉這個字母,但是數字不會替換 var string="h2othi2"; string.replace(reg,"A"); //結果為A2othA2三. 匹配模式 貪婪模式
極可能多地匹配
var reg=/d{3,6}/g; var string="123456789"; string.replace(reg,"A"); //結果為"A789",盡可能多的匹配非貪婪模式
讓正則表達式盡可能少的匹配,一旦匹配成功就不再繼續嘗試。方式是在量詞后加上?
var reg=/d{3,6}?/g; var string="123456789"; string.replace(reg,"A"); //結果為"AAA",盡可能多的匹配四. RegExp對象 創建方法
有兩種方法可以創建RegExp對象
a.顯式構造函數:
var reg=new RegExp("pattern"[,"flag"]);
b.隱式構造函數:
var reg=/pattern/[flags];
其中,flags可以是一些標志字符的組合
g 為全局標志,將對所有匹配的部分起作用,如果不設置,僅搜索和替換最早匹配的內容
i為 忽略大小寫的標志,如果設置,忽略大小寫
m 為多行標志,如果設置,“^”還可以與被搜索字符串的 n 或 r 之后的位置進行匹配
例如:
/ab+c/i; new RegExp("ab+c","i");RegExp對象的屬性
global:布爾值
ignoreCase:布爾值
lastIndex:整數,表示開始搜索下一個匹配項的字符位置
multiLine:布爾值
source:正則表達式的字符串表示
RegExp對象的方法 execrgExp.exec(str)
返回值:如果沒有找到匹配返回null,如果找到則返回一個數組
返回的數組有三個屬性,分別是input、index和lastIndex
input包含了查找的字符串, index屬性包含了整個被查找字符串中被匹配的子字符串的位置, lastIndex屬性中包含了最后一次匹配中最后一個字符的下一個位置test
rgexp.test(str)
返回值:如果存在一個模式,返回true
matchstringObj.match(rgExp)
返回值:如果沒有找到匹配返回null,如果找到則返回一個數組
返回的數組有三個屬性,分別是input、index和lastIndex,input包含了查找的字符串,index屬性包含了整個被查找字符串中被匹配的子字符串的位置,lastIndex屬性中包含了最后一次匹配中最后一個字符的下一個位置
stringObj.search(rgExp);
返回值:如果存在,則返回 一個整數值,指明這個匹配距離字符串開始的偏移位置。
沒有找到則返回-1
replace(rgExp,replaceText);split
split([separator[,limit]])
separator 分割標識符參數,可以是多個字符或一個正則表達式
limit 限制返回元素的個數
《JavaScript高級程序設計》
《JavaScript正則表達式》課程, Samaritan89
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/80069.html
摘要:正則表達式一直是里比較難以掌握的點。在中創建正則的兩種方式使用字面量這就是正則表達式的字面量語法,表示正則表達式的模式,為正則表達式的標志。字面量形式的正則表達式一般使用較多,也推薦大家盡可能使用這種形式,簡潔易讀,符合正常的使用習慣。 正則表達式一直是js里比較難以掌握的點。 看不懂,學不會,記不住。 每次需要用到正則的時候,都需要再去查找資料。 今天花時間把正則的知識點總結下,希望...
摘要:選擇分組和引用正則表達式的語法還包括指定選擇項子表達式分組和引用前一子表達式的特殊字符。帶圓括號的表達式的另一個用途是允許在同一正則表達式的后部引用前面的子表達式。 正則表達式(regular expression)是一個描述字符模式的對象。JavaScript的 RegExp類 表示正則表達式,String和RegExp都定義了方法,后者使用正則表達式進 行強大的模式匹配和文本檢索與...
閱讀 1050·2021-11-22 15:35
閱讀 1685·2021-10-26 09:49
閱讀 3230·2021-09-02 15:11
閱讀 2075·2019-08-30 15:53
閱讀 2636·2019-08-30 15:53
閱讀 2917·2019-08-30 14:11
閱讀 3527·2019-08-30 12:59
閱讀 3241·2019-08-30 12:53