正則表達以及字串的方法

2021-09-04 11:40:34 字數 3810 閱讀 9074

// 正則

// 1.檢驗乙個字串首尾是否有數字

// \d是數字

var reg = /^\d|\d$/g; //^開頭 $結尾 |或

var str = '123abc2';

console.log(reg.test(str));

console.log(str.match(reg));

// regexp物件方法

// test(); //檢查字串中指定的值 返回布林

// exec(); //檢索字串中指定的值,返回找到的值。並確定其位置

// exec返回的是乙個類陣列

var reg1 = /ab/g;

var str1 = 'ababababbabababaababsb';

// 用exec()方法

// exec()每執行一次就會改變下乙個匹配座標 lastindex

// 最開始lastindex為0

console.log(reg1.exec(str1)); //lastindex為2

console.log(reg1.exec(str1)); //lastindex為4

console.log(reg1.lastindex);

console.log(reg1.exec(str1)); //lastindex為6

// 可以控制lastindex

reg1.lastindex = 0;

console.log(reg1.exec(str1)); //lastindex為2

// 如何匹配出疊詞 (字)\1 ()用\1代表複製出第乙個()中的元素 一模一樣 (b)\1\1\1代表子bbbb

// /(\w)\1\1\1/ 四個括號中匹配出來的相同的字元

// 如:要匹配出 aaaa 這樣的四個相同字元格式的字元

var reg2 = /(b)\1\1\1/g; //只能匹配出bbbb

var str2 = 'bbbbccccdddd';

console.log(str2.match(reg2));

var reg3 = /(\w)\1\1\1/g; //能匹配出四個相同的字元 bbbb cccc dddd 1111 aaaa

var str3 = 'bbbbccccdddd1111aaaa';

console.log(str3.match(reg3));

var reg4 = /(\w)\1(\w)\2/g; //能匹配出aabb或者aaaa這種格式 前兩位後兩位分別相同 \2代表複製第二個()

var str4 = 'aabbccccdddd1111aaaa';

console.log(str4.match(reg4));

// 字串方法 

// 1. match 用來匹配正則 返回乙個或多個匹配到的值

var reg = /(\w)\1(\w)\2/g; //能匹配出aabb或者aaaa這種格式 前兩位後兩位分別相同 \2代表複製第二個()

var str = 'aabbccccdddd1111aaaa';

console.log(str.match(reg));

// 如果不帶g全域性匹配,那麼match返回的格式與exec相同,都是類陣列

var reg1 = /(\w)\1(\w)\2/; //能匹配出aabb或者aaaa這種格式 前兩位後兩位分別相同 \2代表複製第二個()

var str1 = '123aabbccccdddd1111aaaa';

console.log(str1.match(reg1));

// 2.search 返回匹配到的字元所在位置 沒有返回-1

console.log(str1.search(reg1));

// 3.split 把字串分隔為陣列

var reg3 = /a/g;

// var reg3 = /(a)/g;//當加子表示式 分隔後的陣列會有子表示式中的字元

var str3 = 'a123a456a789';

console.log(str3.split(reg3));

// 4.replace 替換字串

// 普通替換功能

var reg4 = /a/g;//沒有g 只替換第乙個 有g替換所有

var str4 = 'ababababab';

console.log(str4.replace(reg4,'1'));

//如果要將aa bb交換順序 可以用反向呼叫子表示式() 符號 $+第幾個子表示式

var reg5 = /(\w)\1(\w)\2/g;

var str5 = 'aabbaabbaabb';

console.log(str5.replace(reg5,'$2$2$1$1'))

console.log(str5.replace(reg5,'$2$1$2$1'))

// 也可以用function來返回替換的新內容

// str.replace(reg,function(正則返回的值,第乙個子表示式,第二個子表示式){})

console.log(str5.replace(reg5,function($,$1,$2)))

// 5.touppercase() 字母變大寫

var str6 = 'asas';

console.log(str6.touppercase());

// 6.tolowercase() 字母變小寫

var str7 = 'asd';

console.log(str7.tolowercase());

// 將the-first-name 變成the-first-name

// 思路:用正則找到-f -n 然後替換成大寫的f n

// 利用子表示式的反向呼叫

var reg8 = /-(\w)/g; //匹配到-x

var str8 = 'the-first-name';

// 由於自表示式的反向需要是字串的格式'$1'。所以要用touppercase的話需要function內進行

console.log(str8.replace(reg8,function($,$1)))

// 正向預查 正向斷言 ?=x

// 如:要匹配到後面緊跟著b的a

var reg9 = /a(?=b)/g;

var str9 = 'abaaaacab';

console.log(str9.match(reg9)); //匹配出兩個a

var reg9 = /a(?!b)/g; //後面不是b的a

// 利用正則對字串去重

var str10 = 'aaaaaabbbbbbbbbccccccccc';

var reg10 = /(\w)\1*/g; //\1*代表多個子表示式裡的值

// 用replace替換

console.log(str10.replace(reg10,'$1'));

// 1000000000 給數字加點 按國際的格式100.000.000

var str11 = '100000000000';

var reg11 = /(?=(\d)+$)/g;

console.log(str11.replace(reg11,'.'));

// 由於會上面的正則只是匹配3位數乙個點 所以會出現.100.000 這種情況

var reg12 = /(?=(\b)(\d)+$)/g;//用\b非字邊界來區分 如果是不是字的邊界處後面有3位數才匹配

console.log(str11.replace(reg12,'.'));

字串的正則方法

字串物件中,可以使用正規表示式的方法,共有四個 match replace search split es6將這四個方法,在語言內部全部呼叫regexp的例項方法,從而做到所有與正則相關的方法,全都定義在regexp物件上.string.prototype.match 呼叫 regexp.proto...

字串裡的正則表達

mystring自定義字串,regexp正規表示式.other其他字串.1.test 用法 regexp.test mystring 意思是判斷mystring是否匹配正規表示式regexp,匹配返回true,否則返回false.2.replace 用法 mystring.replace regex...

正規表示式以及字串String類

所謂的正規表示式就是符合一定規則的表示式 作用 用於專門操作字串的 特點 用一些特點的符合來表示一些 操作 這樣奇偶簡化書寫 所以學習正規表示式奇偶是在學習一些 特殊符號的使用 好處 可以簡化對字串的複雜操作 常用的規則有 預定義字元類 任何字元 與行結束符可能匹配也可能不匹配 d 數字 0 9 d...