對於正則,著稱火星文字,見名知意主要它晦澀難懂,一直以來,看到它老是怕怕的,在平時,也只是簡單的用用,其主要是靠搜,還有就是厚着臉皮求助各路大神了,遇到稍複雜些的正則,便無從下手了,使人頭疼,即便寫完了,過幾月在回頭看時,發現又看不懂那些符號是什麼意思了,終歸結底,仍是本身使用得太少,認識得太淺,正則是一個很是強大能完成搜索和替換的文本工具,本文爲初學者學習筆記心得,適用小白,對於正則,我也一直在學習當中,雖然非常枯燥,可是出去混早晚是要還的,歡迎路過的老師多提意見和指正javascript
正則最多見的是用在表單驗證上,好比要註冊一個網站的帳號,申請註冊郵箱,填寫收貨人信息等,須要填寫用戶信息,好比:姓名,地止,手機號,郵箱,出生日期等,在將這些表單數據信息提交到服務器處理以前,咱們使用javascript程序檢查表單以確認用戶輸入的信息,而且是否符合某些條件要求的,固然正則的用處遠不止在表單上,好比:php
suibichuanji
(不區分大小寫),你並不想要把包含着其餘的字母給找出來,好比什麼hello
,boy
,handsome
(搜索文件關鍵字,排除其餘字符
)驗證文本格式的正確性
)正則最強大的兩個功能就是:java
通常來講,不用正則處理字符操做而想要達到一樣的目的,無非想到的就是不斷的循環遍歷所要操做的字符,在循環體裏面用if語句來進行判斷,那麼就不得不用一些特殊的標記來標識找到了什麼,沒有找到什麼,還須要檢測空白字符和特殊字符等,實現過程很是的繁瑣,然而若是使用正則,就會好不少,好比下面:將一個字符串轉化成駝峯的方法
常規方法:node
/*
*
* 將一個字符串轉換爲駝峯命名
*
* @function test
* @param {String} str
* @return {Array}
* 1.功能函數的編寫,函數的調用,傳參
* 2.js中的內置對象,切割:split(),切割完後得用一個變量給存儲起來
* 3.for循環的遍歷,遍歷查找
* 4.找到對應的字符串,第0個轉化爲大寫,轉化爲大寫的函數,toUpperCase()在加上字符串的拼接,在進行截取(substring())
* 5. 把字符串給拼接起來(join())
*
*/
var str = 'border-top-color';
console.log(str); // border-top-color
function test(str){
var arr = str.split('-'); // spilt切割,border,top,color
console.log(arr); // [border,top,color]
for(var i = 1;i<arr.length;i++){ // 循環遍歷數組
arr[i] = arr[i].charAt(0).toUpperCase()+arr[i].substring(1);
console.log(arr[i]); // [border,Top,Color]
}
return arr.join(''); // 字符串給加起來
}
console.log(test(str)); // borderTopColor複製代碼
以下圖所示web
利用正則表達式將一字符串轉換爲駝峯式命名
var str = 'border-top-color';
function test(str){
var re = /-(\w)/g; // \w匹配全部的字母和數字字符以及下劃線_
return str.replace(re,function($0,$1){ // 第一個參數re表示正則,第二個回調函數,對該字符串處理方式,圓括號內的形參數表示正則表達式的子選項
return $1.toUpperCase(); // 轉大寫
});
}
console.log(test(str)); // borderTopColor複製代碼
以下圖所示:正則表達式
相同點
:都是爲達到同一個目的,將一個字符串轉換爲駝峯命名
不一樣點
:普通正常方法,得利用循環以及js中內置對象提供的字符串(split,substring,join等)方法對所要操做的字符串進行操做,而正則少去了複雜的循環遍歷,處理的結果比較快,可是前者比較好理解,然後者難以閱讀和理解
正則表達式
:用來匹配和處理文本的字符模式的對象,在Ecmascript中RegExp類表示正則表達式,是正則表達式語言建立的,是一種爲解決以上等問題的工具而造就的一門規則,它有特殊的語法和指令,String和RegExp都定義了使用正則表達式進行強大的模式匹配和文本檢索與替換的函數用途
:解決以上等問題,主要是用於驗證客戶端的輸入的數據,當用戶填寫完表單後執行某些操做(好比點擊提交按鈕),表單的數據就會發送到服務器端,在服務器端php,java等後端語言,會進一步的作處理,進行驗證和反饋,由於在客戶端(瀏覽器)驗證,能夠節約大量的服務器端系統資源,避免頻繁的交互,延遲響應,提供更好的用戶體驗數據庫
var pattern = new RegExp("pattern"); // 第一個參數字符串
var pattern = new RegExp("pattern",'ig'); // 第二參數可選模式參數,模式修飾符,對字符串某些限制
console.log(Object.prototype.toString.call(pattern));//檢查類型"[object RegExp]"
console.log(new RegExp("pattern")); // 等價於/pattern/
console.log(new RegExp("pattern",'ig'));//等價於 /pattern/gi,其中ig順序任意複製代碼
var pattern = /pattern/; // 用兩個反斜槓,中間任意字符
var pattern = /pattern/ig; // 第二個斜槓後加一個或者多個模式修飾符,這裏忽略大小寫,全局匹配複製代碼
模式修飾符的可選參數
參數 | 含義 |
---|---|
i | 忽略大小寫(ignore) |
g | 全局匹配(global) |
m | 多行匹配(multiline) |
test()
:一個用來測試在給定字符串裏是否存在一個匹配的正則表達式的方法,返回布爾值,若是存在,則返回true,若是沒有,則返回falseexec()
:一個用來搜索一個匹配的regExp方法,用於在字符串中查找指定正則表達式,若是 exec()方法執行成match(pattern)
:一個用來匹配一個字符串的string方法,返回pattern中的子串或者nullreplace(patternReg,replaceReg)
:一個用來完成替換操做的String方法,用replaceReg替換patternRegsearch(pattern)
:一個用來測試在某給定字符串裏是否存在着一個匹配的String方法,返回字符串中pattern的開始位置split(pattern)
:一個用來把一個字符串拆分爲多個子串的String方法,返回字符串按指定的pattern拆分紅的數組模式修飾符i,g
絕大多數正則表達式引擎的默認行文只是返回第一個匹配的結果,若是想要把兩個或者更多個匹配的結果都找出來,一般返回爲一個數組或者是其餘的專用格式,可使用g修飾符,表示全局匹配,該標誌將返回一個包含着全部匹配的結果數組.例如:後端
var str = "my name is suibichuanji,my public numer is itclanCoder";// 待匹配對象
var pattern = /my/;// 後面無修飾符,書寫好正則規則,而後拿着要待匹配對象進行匹配
console.log(pattern.test(str)); // true複製代碼
用全局匹配修飾符數組
var str = "my name is suibichuanji,my public numer is itclanCoder";
var pattern = /my/g;
console.log(pattern.test(str)); // true複製代碼
注意:默認行爲只返回第一個匹配的結果,若匹配到了,就不會日後匹配了,具體示例驗證,能夠在線正則表達式測試
正則表達式中是區分字母大小寫的,my與MY是兩個不一樣的字符串,能夠用修飾符i來強制匹配不區分大小寫
字母大小寫有區分瀏覽器
var str = "my name is suibichuanji,my public numer is itclanCoder";
var pattern = /MY/; // 未使用任何修飾符
console.log(pattern.test(str)); // false複製代碼
使用i修飾符,不區分大小寫匹配
var str = "my name is suibichuanji,my public numer is itclanCoder";
var pattern = /MY/i; // 第二個斜槓後使用i修飾符,表示忽略大小寫
console.log(pattern.test(str)); // true複製代碼
使用一條語句實現正則
console.log(/my/.test("my name is suibichuanji,my public numer is itclanCoder"));
console.log(/MY/i.test("my name is suibichuanji,my public numer is itclanCoder"));// 前面是正則規則.test()方法,圓括號內是要待匹配的對象與前面的規則進行匹配,其結果,要麼true,要麼false複製代碼
test():該方法用於檢測一個字符串是否匹配某個模式
參數
:圓括號內的str表示你想要的檢測的字符串對象返回值
:執行完與正則規則匹配後,若是字符串str中含有與pattern匹配的文本的話,那麼返回true,不然返回false,具體示例,以上例子可得exec():在字符串中執行匹配搜索返回結果數組
語法
:正則規則.exec(待要檢測的字符串),pattern.exec(str)參數
:str是須要待檢測的字符串,pattern是咱們寫的正則規則返回值
:執行完與正則規則匹配後,如有匹配到,則會返回一個數組,若是未找到匹配,則返回值爲null,以下示例var str = "welcome focus on itclanCoder public Number";
var pattern = /suibichuanji/ig; // 忽略大小寫,而且全局匹配
console.log(pattern.exec(str)); // null複製代碼
使用exec()函數,當有匹配時,則返回一數組
var str = "welcome focus on itclanCoder public Number";
var pattern = /itclanCoder/ig;
console.log(pattern.exec(str));//["itclanCoder", index: 17, input: "welcome focus on itclanCoder public"複製代碼
使用match():一個用來匹配一個字符串的string方法,返回pattern中的子串或者null
注意
:使用match()的位置,前面是待要匹配的對象,而圓括號內是正則表達式
當匹配對時,結果返回待匹配的特定字符的子串,該方法相似於indexOf()
或者lastIndexOf()
;可是它返回的是指定的值,而不是字符串的位置
語法
:待要檢測的字符串對象
.match(正則規則)
,str.match(pattern)參數
:pattern表示是正則表達式,能夠是在pattern中檢索的字符串,也能夠是須要檢索的RegExp對象返回
:若是匹配到,則返回一成功的數組,若是沒有找到任何的一個匹配,那麼它將返回的是nullvar str = '"chuanchuan is handsome man,chuanchuan川川是一個全宇宙最帥的男人"';
console.log(str.match("chuanchuan"));// ["chuanchuan", index: 1, input: ""chuanchuan is handsome man,chuanchuan川川是一個全宇宙最帥的男人""]複製代碼
var pattern = /chuanchuan/ig;
var str = '"chuanchuan is handsome man,chuanchuan川川是一個全宇宙最帥的男人"';
console.log(str.match(pattern)); // ["chuanchuan", "chuanchuan"]
var str = '"chuanchuan is handsome man,chuanchuan川川是一個全宇宙最帥的男人"';
console.log(str.match(/handsome/));// ["handsome", index: 15, input: ""chuanchuan is handsome man,chuanchuan川川是一個全宇宙最帥的男人""]複製代碼
當不匹配時,其結果返回null,一樣要注意圓括號內是正則表達式與test()和exec()方法不一樣
var pattern = /隨筆川跡/ig;
var str = '"chuanchuan is handsome man,chuanchuan川川是一個全宇宙最帥的男人"';
console.log(str.match(pattern)); // null複製代碼
使用search(pattern):返回字符串中 pattern 開始位置
注意:search方法查找到即返回,會忽略g修飾符全局匹配,同時它也沒有RegExp對象的lastIndex的屬性,且老是從字符串開始位置進行查找,老是返回的是str匹配的第一個位置查到並返回第一個,若沒有匹配到,則返回-1
語法
:待要檢測字符串對象
.search(pattern)
;str.search(pattern)參數
:pattern是正則規則表達式,str是要待檢測的字符串對象返回
:str中第一個與RegExp(pattern)對象相匹配的子串的起始位置,若是沒有找到任何匹配的子串,則返回-1,若匹配到,則返回該子串的位置,示例代碼以下var pattern = /隨筆川跡/i;
var str = "chuanchuan is handsome man,chuanchuan川川是一個全宇宙最帥的男人";
console.log(str.search(pattern)); // -1複製代碼
若匹配到,則返回的是該待匹配對象子字符串的位置
var pattern = /川川/ig; // 因爲search方法查到就返回,無需g修飾符,查到返回第一個
var str = "chuanchuan is handsome man,chuanchuan川川是一個全宇宙最帥的男人";
console.log(str.search(pattern)); // 37複製代碼
使用replace(pattern,replacePattern)
使用replace方法替換匹配到的數據
語法
:待檢測字符串對象.replace(正則規則,要替換的文本或者功能函數),str.replace(pattern,fun);參數
:圓括號內第一個參數表示正則規則,第二個參數能夠是字符串也能夠是函數,在 str中查找與RegExp(pattern)相匹配的子字符串,第二個參數值或者功能函數執行結果來替換這些子串,若是RegExp(pattern)具備全局標誌g,那麼replace()方法將替換全部匹配的子串,不然,它只替換第一個匹配子串(也就是說默認只會找第一個子串進行返回,若想全局替換,則要加g修飾符),replace()中的第二個參數,$字符具備特定的含義,它是從模式匹配獲得的字符串將用於替換待檢測字符串文本,具體下節在作補充返回
:返回替換後的新字符串,示例代碼以下var pattern = /chuanchuan/i;
var str = "chuanchuan is handsome man,chuanchuan川川是一個全宇宙最帥的男人";
console.log("未使用replace方法以前",str);
console.log("使用replace方法以後",str.replace(pattern,"隨筆川跡"));//未使用replace方法以前 chuanchuan is handsome man,chuanchuan川川是一個全宇宙最帥的男人//使用replace方法以後 隨筆川跡 is handsome man,chuanchuan川川是一個全宇宙最帥的男人複製代碼
注意
:replace方法替換,也查到後並返回,默認返回第一個,若是想要全局匹配替換,那麼對正則使用修飾符g全局匹配,可達到全局匹配替換
使用split()方法拆分紅字符串數組
使用方法:待匹配對象
.split(正則規則肯定是以什麼樣的格式將該字符串進行拆分
,可選參數
);
第一個參數表示以什麼樣的格式對該字符串進行拆分,而第二個參數可選,若沒有則是對整個字符串的進行拆分,如果有數字參數,則返回的子字符串不會多於這個參數指定的數組
語法
:待匹配對象.split(第一個參數以什麼樣的形式將待匹配對象進行拆分必填項,能夠是字符串或者正則,第二個爲可選參數,用指定拆分後數組的長度,若無,則對待檢測的整個字符串進行操做),str.split(pattern,2);參數
:pattern能夠是字符串也能夠是正則規則,第二個參數可選,用於對待檢測字符串切割後的數組長度,返回的數組不會超過該指定的長度返回
:一個字符串數組,該數組經過在split()圓括號內第一個參數,指定的邊界處將字符串str分割成子字符串var pattern = / /i; // 中間是空格,空格也是字符,用來分割單詞之間的字符之一,意味着以空格的規則將字符串進行拆分紅數組
var str = "chuanchuan is handsome man,chuanchuan川川是一個全宇宙最帥的男人";
console.log("未使用split方法以前",str);
console.log("使用split方法以後",str.split(pattern)); //未使用split方法以前 chuanchuan is handsome man,chuanchuan川川是一個全宇宙最帥的男人//使用split方法以後 (4) ["chuanchuan", "is", "handsome", "man,chuanchuan川川是一個全宇宙最帥的男人"]複製代碼
split():圓括號後設置第二個參數,會指定返回字符串的長度var pattern = / /i;
var str = "chuanchuan is handsome man,chuanchuan川川是一個全宇宙最帥的男人";
console.log("未使用split方法以前",str); //未使用split方法以前 chuanchuan is handsome man,chuanchuan川川是一個全宇宙最帥的男人
console.log("使用split方法以後",str.split(pattern,2)); //使用split方法以後["chuanchuan", "is"]複製代碼
可使用Object.prototype.toString.call()
進行準確的肯定返回結果的具體類型小結
:各個方法的差別比較
相同點
:都是對待檢測字符串進行操做,會返回一個指定的結果不一樣點
:正則表達式RegExp對象中提供的兩個test()
,exec()
方法的書寫格式與String()提供的match()
,search()
,replace()
,split()
有所不一樣,前者是:正則規則.test(待檢測字符串對象),pattern.test(str)
,pattern.exec(str)
,然後者是:待檢測字符串對象.match(正則規則),str.match(pattern)
,str.search(pattern)
,str.replace(pattern
,替換的文本或功能函數),str.split(肯定對待檢測字符串以什麼樣的格式拆分,可選參數項指定切割後數組長度);只要知道RegExp()中的兩個檢測方法
與String()提供的四個的方法格式相反就能夠了
特殊字符控制特定匹配模式
枯燥的內容來了,光靠字符右邊的釋義,是記不住的,也是理解不了的,平時但凡打開那種滿屏的表格正則的博文,反正我是看不下去,由於沒有示例,我記不住也理解不了,一碼勝千言...
注意:若反斜線後跟元字符,則將失去特殊的含義,好比\.
就是表示一個點
,反斜槓用來對字符進行轉義,
字符類:單個字符和數字 元字符號
:
.
:匹配除換行符之外的字符(也就是匹配任何單個字符,字母,數字,下劃線,甚至字符自己)[a-z0-9]
:匹配括號中的字符集中的任意字符等價於[abcd..z0123..9]\d
:匹配任何一個數字字符,等價[0-9]或者[0123456789]\D
:匹配任何一個非數字字符,等價[^0-9]\w
:匹配任何一個字母數字字符(大小寫都可),或下劃線,等價[a-zA-Z0-9_]\W
:任何一個非字母數字或非下劃線字符,等價於[^a-zA-Z0-9_]字符類:錨字符
^
:匹配字符串的開頭(行首匹配),還有另一個做用就是取非(反),將給定的字符集合排除在匹配操做之外,除了該字符集合裏的字符,其餘字符均可以被匹配,注意,給定字符集的全部字符或字符區間,而不是僅僅限於緊跟在^字符後面的那一個字符或字符區間$
:匹配字符串的結束(行尾匹配)\A
:只有匹配字符串開始處\b
:匹配單詞邊界,一個單詞的開始或者結尾,而且匹配且匹配一個位置,不匹配任何字符\B
:不匹配一個單詞的邊界,匹配非單詞邊界,與\b相反,能夠用來查找先後都有多於的空格的連字符等,在正則裏,小寫與大寫,每每功能相反點.元字符的使用
解釋:匹配除換行符之外的字符(也就是匹配任何單個字符,字母,數字,下劃線,甚至字符自己)
使用一個點符號,只匹配一個字符,使用test()測試
var str = 'suibichuanji';
var pattern = /s.i/;
console.log(pattern.test(str)); //true複製代碼
使用exec()測試結果
var str = 'suibichuanji';
var pattern = /s.i/;
console.log(pattern.exec(str)); // ["sui", index: 0, input: "suibichuanji"]複製代碼
使用match()方法,圓括號內是要待匹配的對象與前面的規則進行匹配,其結果,要麼true,要麼false
var str = 'suibichuanji';
var pattern = /s.i/;
console.log(str.match(pattern));// ["sui", index: 0, input: "suibichuanji"]複製代碼
使用search方法查找到即返回,也就是說無需g修飾符全局匹配,查到並返回第一個
若沒有匹配到,則返回-1
var str = 'suibichuanji';
var pattern = /s.i/;
console.log(str.search(pattern));// 0複製代碼
使用replace(pattern,replacePattern)
使用replace方法替換匹配到的數據
var str = 'suibichuanji';
var pattern = /s.i/;
console.log(str.replace(pattern,"ab"));// abbichuanji複製代碼
使用split()方法對指定的字符串進行以指定的正則規則進行切割並返回數組
var str = 'suibichuanji';
var pattern = /s.i/;
console.log(str.split(pattern)); // ["", "bichuanji"]複製代碼
以上主要是熟悉一下String與RegExp提供的方法,他們真的很強大[a-z0-9]
匹配括號中的字符集中的任意字符等價於[abcd..z0123..9][]
:用來定義一個字符集合,在使用左[和]右中括號定義的字符集合裏,這兩個元字符之間的全部字符集合都是該集合的組成部分,該字符集合的匹配結果是可以與該集合裏的任意一個成員相匹配-
:連字符,是一個特殊的元字符,它只能用在左中括號[和]右括號之間,[0123456789]
等價於[0-9]
,[ABCDEF中間字母省略Zabcd中間字母省略z0123456789]
等價於[A-Za-za-9]
在字符集合之外的地方,-橫崗只是一個普通的字符,只能與-自己相匹配,因此,在正則裏,-字符不須要被轉義,注意:在定義一個字符區間的時候,必定要避免讓這個區間的尾字符小於它的首字符,(好比[4,0]);這種區間是無心義的,並且會讓整個模式匹配失效
var str = "itclanCoder 2323535";
var pattern = /[a-z0-9]/; // 匹配區間裏面的任意一個字符,若有則返回第一個字符,若無則返回false,或者null
console.log(pattern.test(str));// true複製代碼
若無字符匹配,使用test()或exec()返回false,或null
test()測試
var str = "ABBCC";
var pattern = /[a-z0-9]/;
console.log(pattern.test(str));// false複製代碼
exec()測試
var str = "ABBCC";
var pattern = /[a-z0-9]/;
console.log(pattern.exec(str));//null複製代碼
\d
字符
匹配任何一個數字字符,等價[0-9]
或者[0123456789]
示例代碼以下
test()方法測試以下
var str = "345893347852394";
var pattern = /\d/; // 檢測匹配數字
console.log(pattern.test(str));//由於str確實含有數字,只要待匹配的字符串含有數字,就返回true複製代碼
exec()測試結果
var str = "345893347852394";
var pattern = /\d/;
console.log(pattern.exec(str));// ["3", index: 0, input: "345893347852394"]複製代碼
[0-9]
等價\d
var str = "345893347852394";
var pattern = /[0-9]/; // [0-9]使用字符集合區間[],並用鏈接符-橫崗
console.log(pattern.test(str));//true複製代碼
當不匹配時,則返回false
var str = "abcdfeffsgsdgasd"; // 字符串中並無包含數字
var pattern = /[0-9]/;
console.log(pattern.test(str)); // 所要匹配的字符串中並無包含數字,false
倘若是要與此相反,則使用^
var str = "abcdfeffsgsdgasd"; // 字符串中並無包含數字
var pattern = /[^0-9]/; // 注意^應放在中括號裏面,它
console.log(pattern.test(str)); // true複製代碼
\D
字符
匹配任何一個非數字字符,等價[^0-9]
var str = "absdjfsksdjg";
var parttern = /^\D/; // 匹配任何一個非數字字符等價[^0-9]
console.log(pattern.test(str));// true複製代碼
當不匹配時:
var str = ""; // 因爲沒有字符
var parttern = /^0-9/;
console.log(pattern.test(str));//因爲沒有字符,因此返回false,注意邏輯複製代碼
\w
字符
匹配任何一個字母數字字符(大小寫都可),或下劃線,等價[a-zA-Z0-9_]
var str = "shjfuiewgns_235356345";
var pattern = /\w/; // 匹配[a-zA-Z0-9_]中任意一字符便可
console.log(pattern.test(str)); // 由於匹配的字符串有,因此結果true複製代碼
當爲空格或者沒有任何字符時,則爲false
var str = " "; // var str = "";
var pattern = /\w/;
console.log(pattern.test(str)); //false複製代碼
\W
字符
任何一個非字母數字或非下劃線字符,等價於[^a-zA-Z0-9_]
var str = " "; // 空格
var pattern = /\W/;
console.log(pattern.test(str));// true複製代碼
^
字符
匹配字符串的開頭(行首匹配)
var str = "itclanCoder ";
var pattern = /^itclanCoder/; // 注意從開頭開始匹配,^後面跟着的字符串全匹配
console.log(pattern.test(str));// 只要待匹配的字符串有包含正則所匹配的規則,都返回true,若不知足則返回false複製代碼
不徹底匹配時,則返回false
var str = "itclanCode -";
var pattern = /^itclanCoder/;
console.log(pattern.test(str));//false,由此^是對後面的整個字符都進行匹配限制複製代碼
$
字符
匹配字符串的結束(行尾匹配)
var str = "itclanCoder";
var pattern = /itclanCoder$/;
console.log(pattern.test(str));//true複製代碼
同上不匹配時
var str = "tclanCoder";
var pattern = /itclanCoder$/; // 從結尾處開始匹配,會與待匹配的字符串向前查找
console.log(pattern.test(str)); // 由於與規則的正則不徹底匹配,因此返回false複製代碼
^與$結合使用
var str = "itclanCoder";
var pattern = /^itclanCoder$/; // ^開頭是i開始匹配,結尾$開始匹配,若待檢測字符串有一個與正則表達式不一樣,則返回false
console.log(pattern.test(str));// true複製代碼
待檢測字符有一處或若干處不一樣時,則返回false
var str = "itclansdfdCoder"; // 待檢測字符對象
var pattern = /^itclanCoder$/;
console.log(pattern.test(str)); // false複製代碼
\A
元字符
只有匹配字符串開始處,示例代碼以下
var str = "javascript is a very important skill";
var pattern = /\A/;
console.log(pattern.test(str));// false
var str = "javascript is a very important skill";
var pattern = /\A/;
console.log(pattern.exec(str));// null
var str = "Aavascript is a very important skill";
var pattern = /\A/;
console.log(pattern.test(str)); // true
var str = "Aavascript is a very important skill";
var pattern = /\A/;
console.log(pattern.exec(str));// ["A", index: 0, input: "Aavascript is a very important skill"]複製代碼
\b
:匹配單詞邊界,一個單詞的開始或者結尾,而且匹配且匹配一個位置,不匹配任何字符
示例代碼以下
從末尾開始匹配
var str = "codeincode";
var pattern = /code\b/; //從末尾處,一個個往前匹配,如有則返回,若無返回null
console.log(pattern.exec(str));// ["code", index: 6, input: "codeincode"]複製代碼
反例:無匹配到
var str = "codeinnode";
var pattern = /code\b/;// 從後往前逐個匹配,意味倒數第四個是n不是c因此沒有匹配到,其結果返回null
console.log(pattern.exec(str));//null複製代碼
從頭開始匹配
var str = "codeinnode";
var pattern = /\bcode/;
console.log(pattern.exec(str));// ["code", index: 0, input: "codeinnode"]複製代碼
從頭開始匹配,當沒有時,有一個字符不匹配時,就會返回null
var str = "coceinnode";
var pattern = /\bcode/; // 從頭開始匹配
console.log(pattern.exec(str)); // 由於第三個字符是c不是d,與所要的正則規則不匹配,因此返回null複製代碼
\B
:不匹配一個單詞的邊界,匹配非單詞邊界,與\b相反,能夠用來查找先後都有多於的空格的連字符,在正則裏,小寫與大寫,每每功能相反
示例代碼以下:
var str = "javascript is very important skill - I love it";
var pattern = /\B-\B/; // 將匹配一個先後都不是單詞邊界的連字符
console.log(pattern.exec(str));// ["-", index: 36, input: "javascript is very important skill - I love it"]複製代碼
限於篇幅,本節內容就學習到這裏了,正則是一個很是強大的文本匹配工具,用特殊的字符正着去匹配文本還好(其實也不簡單),每每須要逆向的去折騰它,就是不在你考慮範圍條件下也要考慮進去從而剔除一些程序上的漏洞,是比較難的,至於更多相關正則的學習分享,我將持續Go on!!
match()
,search()
,replace()
,split()
最爲經常使用,區別他們的書寫規則test()
,exec()
,match()
,search()
,replace()
,split()
方法的具體簡單使用