<!DOCTYPE html>
<html>
<head>
<title></title>
</head>
<body>
<script type="text/javascript">
// var test = "\
// <div></div>\
// <span></span>\
// ";
// var str = "abcd\nedf";
//RegExp
// var reg = /abc/i;
//ignoreCase 忽略大小寫
// var reg1 = new RegExp(reg);
// var str = "aBcd";
//表達式
// var reg = /^a/gm;
//global 全局匹配
//多行匹配 + m
// var str = "abababa\nabab";
//兩個a
// reg.test();只能返回true和false
// str.match();可以返回準確的內容數組
// var reg = /[ab][cd][d]/g;
//第一位區間第二位區間第三位...
//[^a] 第一位不是a
//^a 第一位是a
// var reg1 = /[0-9A-z][cd][d]/g;
// var str = "ab1cd";
// str.match(reg); //"bcd"
//str.match(reg1); //"1cd"
// var reg = /(abc|bcd)[0-9]/g;
// "|" 或運算
// var str = "bcd2";
//元字符
// \w === [0-9A-z_]
// \W === [^\w] 除了\w的所有元素
// \d === [0-9]
// \D === [^\d]
// \s === [\t\n\r\v\f ] 空格所有的
// \S === [^\s]
// \b === 單詞邊界
// \B === 非單詞邊界
// . === [^\r\n]
// var reg = /\bcde\B/g;
//c 要是單詞邊界
//e 不是單詞邊界
// var reg1 = /\t/g;
//匹配table鍵空格
// var str = "b%cd2";
// var str1 = "aBc cdefgh";
// 正則表達式中Unicode編碼
// \u0000
// \u0affff
// \u101abe
// var reg2 = /[\u0000-\uffff]/g;
// var str2 = "我想 測試一下";
// var reg3 = /[\d\D]/g;
//一個集合加上他的補集等於所有
// var reg4 = /./g;
//量詞
//貪婪匹配原則
//能多就不會少
//n+ {1, 正無窮infinity}
//n* {0, 正無窮infinity}
//n? {0,1}
//n{x} {x}
//n{x,y} {x,y}
//n{x,} {x, 正無窮}
//$ 以什麼什麼結尾
//開頭加結尾固定字符串
// var reg = /\w{1,2}/g;
// var str = 'cde';
// var reg1 = /^cde$/g;
//檢驗一個字符串首尾是否含有數字
//或 |
//&& === [\s\S]*
// var reg3 = /^\d|\d$/g;
// var str2 = "sdjfjas1";
// RegExp 對象屬性
// var reg = /ab/g;
// var str = "ababababab";
// RegExp 對象方法
// reg.exec(); 不加g遊標lastIndex不變
//reg.lastIndex 遊標索引沒匹配一次找index
//匹配方法
// 拓展
var str = "aaaa";//匹配xxxx
//子表達式
var reg = /(a)\1\1\1/g;
var str1 = "aabb";
var reg1 = /(\w)\1(\w)\2/g;
console.log(str1.match(reg1));
//尋找匹配到的位置
console.log(str1.search(reg1));
var str2 = "safsfsfskjskjfsfqwfwkfaaaasfksfskkkkkksdfsfsssss";
console.log(str2.split(reg));//按照什麼進行拆分
var str3 = "abacdefsf";
console.log(str3.replace("a","b"));
//bbacdefsf 只能替換一個沒有訪問全局的能力
var reg3 = "/a/g";
console.log(str3.replace(reg, "b"));
console.log(str1.replace(reg1, function ($, $1, $2) {
return $ + $2 + $1 ;
}));
//$ = aabb $1 = a $2 = b 第一個爲第一個全局表達式
//後面都爲子表達式
//全局匹配替換 加上了g
//題
//改成小駝峯式的寫法
//the-first-name --> theFirstName
var str4 = "the-first-name";
var reg4 = /-(\w)/g;
console.log(str4.replace(reg4, function ($ , $1) {
return $1.toUpperCase();
}));
//匹配多少次這個function就執行多少次
//強行替換$ $ 替換$
//匹配? / *匹配變成/? /* //
//正向預查 正向斷言
var str5 = "abaaaa";
var reg5 = /a(?=b)/g;//後面跟着b的那個a a
var reg6 = /a(?!b)/g;//後面不是跟着b的那個a a a a a
//非貪婪匹配的正則表達式 能少儘量別多
//打破貪婪匹配後面加問號 ?
var reg7 = /a*?/g;
//字符串去重 RegExp
var strw = "aaaaaaaaabbbbbcccdddddd";
var reg = /(\w)\1*/g;
console.log(strw.replace(reg , "$1"));
//百度最後一道題
//科學計數法
//變成100.100.100
//後面從前面查沒三位打一個點
var str = "1000000000";
var reg = /(?=(\B)(\d{3})+$)/g
//正向預查,單詞邊界不爲空,倒數三位。
console.log(str.replace(reg, "."));
</script>
</body>
</html>
JavaScript思維導圖——Day 19(正則表達式RegExp)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.