標籤:使用者 建立 device 快捷 round ace order 技術分享 大小寫
JavaScript:Regex的應用應用Regex對象RegExp建立Regex
JavaScript中使用RegExp對象來表述一個Regex。使用Regex之前首先要建立一個RegExp對象:
var oRexp = new RegExp(pattern,[flag]);
說明:
pattern:為必選項,表示以字串格式表示的Regex。
flag:為可選項,是匹配選項,可用值如下:
修飾符 |
描述 |
i |
執行對大小寫不敏感的匹配。 |
g |
執行全域匹配(尋找所有匹配而非在找到第一個匹配後停止)。 |
m |
執行多行匹配。 |
使用者不一定要顯示的建立RegExp,還可以隱式地建立RegExp對象:
var oRegp = /pattern/[flag]
注意:
使用顯式格式建立RegExp對象時,Regex中的“\”,要用“\\”來代替,且運算式開頭和結尾不需要書寫“/”。
判斷字串是否存在匹配內容
說明:
test() 方法用於檢測一個字串是否匹配某個模式,如果字串中含有匹配的文本,則返回 true,否則返回 false。
執行個體:
檢測使用者輸入的郵箱是否匹配模式
<!DOCTYPE html><html lang="en"> <head> <title></title> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> <link href="css/style.css" rel="stylesheet"> </head> <body> <form> <input name="email" type="text" id="email"> <input name="check" type="button" value="檢測" onclick="checkMail()"> </form> <script> function checkMail() { var objReg =/\w+[@]{1}\w+[.]{1}\w+/ //模式 var email = document.getElementById("email").value; if(objReg.test(email)) //利用test進行匹配檢測,返回true或這false { alert("Email符合規範") }else{ alert("Email不符合規範") } } </script> </body></html>
對字串進行匹配檢測
說明:
exec()方法,通過對指定的字串進行一次匹配檢測,擷取字串中第一個與Regex所匹配的內容,並將該匹配內容及其子匹配的結果儲存到返回的數組中。
執行個體:
檢測手機號,並將第一次匹配成功的內容及其子匹配的結果儲存到返回的數組中。
<script> var objReg =/1[35](\d)(\d{8})/g; var ostring="我的電話13111111111 它的電話15222222222" var arr=objReg.exec(ostring); for(var i=0;i<arr.length;i++) { document.write(arr[i]); } </script>
說明:
這裡只有第一次匹配到的,即13111111111這個電話,15222222222雖然也符合,但是這個方法只進行一次匹配。
替換字串中的指定內容
說明:
replace()方法可以用指定的子字串替換掉字串中與指定額Regex相匹配的內容。
執行個體:
將所有數字變成X
<script> var objReg =/\d/g; var ostring="我的電話13111111111 它的電話15222222222" document.write(ostring.replace(objReg,‘X‘)); </script>
匹配處理結果
在JavaScript中,使用Regex進行檢索後,匹配結果將儲存在集合中。本節將講解該集合中的各種處理,如擷取匹配位置、擷取子匹配結果、擷取匹配索引。
擷取字串中所有的匹配資訊
說明:
String.match()方法返回一個數組,數組儲存了字串中所有的匹配資訊。
執行個體:
匹配所有第二個字母為o的單詞
<script> var objReg =/\wo(\w+)?/g; //所有第二個字母為0的單詞 var ostring="Do you lova MS?" var arr = ostring.match(objReg); if(arr!=null) { for(var i=0;i< arr.length;i++) { document.write("<li>"+arr[i]) } } </script>
擷取第一次匹配成功的起始地址
說明:
String.search()方法是與指定的Regex相比較,以得到與之相匹配的內容第一次出現時的位置。
執行個體:
檢測第一次出現ABCBA類似形式的字串位置
代碼:
<script> var objReg =/(\d)(\d)\d\2\1/; var ostring="11010111" var pos = ostring.search(objReg); if(pos!=-1) { var content = objReg.exec(ostring); alert("找到了,位置是"+pos+" 內容是"+content[0]); } </script>
效果:
補充:
說明:
這裡用到了 後向引用
- 當一個Regex被分組之後,每一個組會自動被賦予一個組號,該組號可以代表該組的運算式。
- 分組的編製規則:從左至右,以左括弧為標誌,第一個分組為1,第二個分組為2,以此類推。
- 反向引用提供了尋找重複字元組的方便方法。它可被認為是再次匹配同一個字串的快捷指令。
第二種方式:
RegExp.index:靜態屬性,返回字串第一次匹配出現的起始位置
JavaScript:學習筆記(3)——Regex的應用