1、replace(searchValue,newValue)
2、子項
3、子項在match與exec方法中的使用 (下圖補充:exec 使用g時,匹配的結果跟匹配的次數有關)
4、子項在replace方法中的使用
例如
var str = 'abc123def';
var re = /\d+/;
var newStr = str.replace(re,"$$");//將匹配結果替換成$
var newStr = str.replace(re,"$&789");//$& 引用匹配結果本身。abc123789def
var newStr = str.replace(re,"-$`000");//$& 引用匹配結果左邊的內容。abc-abc000def
var re1 =/(\d)+/;
var newStr = str.replace(re1,"$1");//$1 引用第一個子項 abc3def
var re2 =/((\d)+)/;
var newStr = str.replace(re2,"$1");//abc123def
var newStr = str.replace(re2,"$1");//abc3def
例子:利用子項功能對日期的格式修改
var str ='2018-5-20';
var re = /(\d{4})-(\d{1,2}) (\d{1,2})/;
str.replace(re,"$2-$3 $1");
5、RegExp.$n
6、子項的反向引用
案例三:str =‘jfid2222e2222iji99999k9999jfjd’; 想要匹配出[2222e2222,99999k9999]
var re =/((\d)\2+)[a-z]\1/g
7、零寬斷言
案例解答:var re1 =/\w+(?=2013)/;
8、非捕獲分組
案例解答 : var re = /(col-)(?:xs-|md-)?(\d)/g;
9、命名捕獲分組
案例解答:
var re =/(?<year>)\d{4})-(?<month>\d{1,2})-(?<day>\d{1,2})/
var newStr =str.replace(re,"$<month>-$<day> $<year>");
正則的學習就結束了,最後有一個思考題如圖
補充幾道面試題:
1、實現一個函數,輸入爲一個字母或數字’AABBCAZDFEH’組成的字符串,去重後按照原順序輸出新的字符串。(不能跳出頁面編寫代碼)
var str = 'AABBCAZDFEH';
var reg = /([a-zA-Z])\1/g;
str.replace(reg,'$1');
2、對密碼應用以下限制:其長度必須介於 4 到 8 個字符之間,並且必須至少包含一個數字。
在這裏插入代碼片