標籤:生效 set get replace log 位置 表單 比較 span
一、概要
在python 的學習中我們又學到一個re模組,在javascript 中也是支援正則的,JS中比較簡單只有兩個方法:
test -檢查字串中是否和正則匹配 ,返回 true,false
exec - 擷取Regex匹配的內容,如果未匹配,值為null,否則,擷取匹配成功的數組
二、正則回顧
1 1.代碼 2 [...] 匹配方扣號中字元的任意一個字元, 3 其中可以使用“—” 表示制定範圍[0-9][a-z,A-Z] 4 5 樣本 : 6 /[012] 可以與0A1B2C 中的字元,0,或者1,2匹配一次。 7 下面會將量詞{} 8 9 [^...] 非,除了括弧內的內容,其它可以匹配10 11 [^a-z] ,除了小寫字母a-z不匹配,其它匹配12 13 . 匹配除了換行,斷行符號之外的任一字元14 [^\r\n]15 16 \d 匹配任意一個數字 相當於[0-9]17 \D 匹配除了數字之外,相當於[^0-9]18 19 \s 匹配任意空白字元,如空格,定位字元,分行符號,20 相當於[\t\n\x0B\f\r]21 22 \S 相對\s 匹配非空白字元23 24 \w 匹配任意一個數字,字母,大小寫25 [a-zA-Z0-9_]26 27 2. 量詞28 29 ? 匹配前面一項0次或者1次30 31 執行個體:/JS?/ 作用於S32 /[JS]?/ 作用於JS33 + 匹配前面項 1次或者多次,34 單至少一次35 36 * 匹配前面一項0次,或者多次37 任意次數38 39 {n} 匹配兩次 /o{2}/ google ,匹配聯絡兩個o home 不匹配40 41 {n,m} 匹配次數範圍 n<=x<m 42 43 44 3,位置45 46 ^ 字元的開頭,注意去吧[^...]47 48 例子:49 /^g/ 匹配 good ,不匹配 bug50 51 $ 匹配字串的行結尾52 /g$/ 匹配 bug 不匹配good53 54 55 \b 匹配單詞的邊界56 例子: /e\b/ 匹配 I love seek ,匹配love 中的e57 58 \B 與\b 相反,匹配中間59 60 61 4,選擇匹配符 | 或則62 例子 /1|2/ 匹配1,或者263 64 5,分組 ()65 66 例子, JavaScript , /J(ava)?Script67 68 可以匹配 JSctipt, JavaScript69 70 注意區分 [ava] 這個相當於 3個單元,只要其中有一個匹配就行71 (ava) 是一個整理, (ava)? 匹配ava一次或者0次
三、JS中的正則
1.通過RegExp類的構造方法建立
\d{3}
文法格式:new RegExp(pattern,[flags])
pattern:必選參數,用於指定Regex的標誌資訊。
g:全域標誌,如果設定了該標誌,對於莫個文本執行搜尋,或者替換時
文本中所有的匹配將其作用,如果沒有只生效一次。
i:忽略大小寫標誌,
m:多行標誌,如果不設定這個標誌,那麼^只能匹配字串的開頭,$只能匹配字串的結尾。
var objExp=new RegExp("\\d",g);
2.通過Regex字面量建立RegExp 對象
Regex字面量由兩條//中間加入模式比對字元串組成
如果還要指定標誌資訊,則在最後面的/ 加上標誌資訊,比如G,i
var objExp=/\d/g;
3.使用test()方法進行模式比對
test() aa方法用於對於一個指定字元創執行模式比對,
如果匹配成功,返回true, 否則返回false
檢查電話/^(\d{3,4}-)?\d{8}$//^(\d{3}-)?\d{8}$|^(\d{4}-)?\d{7,8}$<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><title>Title</title></head><body><form name="form1"><input type="text" name="tel" id="tel"><input type="button" value="檢測" onclick="checkTel()"></form><script>function checkTel() {var str=form1.tel.value;console.log(str);var objExp=/^((\d{3,4}-)?\d{7,8})$/;if(objExp.test(str)){alert("OK")}else{alert("NO")}}</script></body></html>
4. 使用exec() 方法進行模式比對
exec() 方法傳回值不是true, false,
而是當沒有搜尋到匹配的字元時,返回null,
否則返回一個數組,這個數組的第一個元素包含與Regex相匹配的字串
其它元素包含的是匹配的各個分組()
regExp.exec(str)
例子,社會安全號碼碼,提取出生年月
1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <title>Title</title> 6 </head> 7 <body> 8 <form name="form1"> 9 <div>pls input :生分證號碼</div>10 <input type="text" name="idcard" id="idcard">11 12 <input type="button" value="提取出生年月日" onclick="getBrithday()">13 </form>14 15 <script>16 function getBrithday() {17 var str=form1.idcard.value;18 console.log(str);19 var objExp=/(\d{6})(\d{8})(\d{4})/;20 console.log(objExp.test(str));21 var arr=objExp.exec(str);22 if(arr!=null){23 alert("出生日期:"+arr[2]);24 }else{25 alert("gun")26 }27 }28 </script>29 </body>30 </html>
四、字串中相關方法
| 12345678 |
obj.search(regexp) 擷取索引位置,搜尋整個字串,返回匹配成功的第一個位置(g模式無效)obj.match(regexp) 擷取匹配內容,搜尋整個字串,擷取找到第一個匹配內容,如果正則是g模式找到全部obj.replace(regexp, replacement) 替換匹配替換,正則中有g則替換所有,否則只替換第一個匹配項, $數字:匹配的第n個組內容; $&:當前匹配的內容; $`:位於匹配子串左側的文本; $‘:位於匹配子串右側的文本 $$:直接量$符號 |
五、自訂表格單驗證外掛程式
5.1、表單驗證的目的?
減少對資料庫的請求,對於哪些簡單的使用者輸入格式或者使用者輸入為空白,但是密碼和使用者的操作,需要交給幕後處理。但是如果瀏覽器的js被禁用了,那就只能發到後台,讓後台去處理了。所以我們一般情況下是前端寫一部分,後端全部寫。
day17-JavaScriptRegex