字符串帶的正則表達式相關的方法
1.search()
搜索符合指定正則表達式在目標字符串中的位置
str.search('hello'); //str字符串中查找search字符串,成功返回位置,否則返回-1
str.search(/hello/); //str中查找符合正則表達式/hello/的字符串位置
str.search(/hello/g); //全局
str.search(/hellO/i); //忽略大小寫
str.search(/hellO/m); //多行匹配
2.match()
搜索指定正則表達式在目標字符串中的字符串,返回的不僅僅是位置
str.match("hello"); //匹配成功返回一個位置信息的數組
str.match("Hello"); //匹配沒成功,返回null
str.match(\HELLO\i); //不區分大小寫
3.replace()
str.replace(“world”,”jack”); //查找str中的world,並替換成jack,返回的是替換后的字符串
str.replace(/world/,”jack”); //同上
4.split()
根據正則表達式去分割相應的字符串,輸入字符串,輸出數組
console.log(str.split(" ")); 以空格為分隔符分割str字符串,返回數組
5.join()
數組合並成字符串
arrdata.join(","); 合並arrdata,並用,連接
RegExp對象的方法
1.test()
和search的作用差不多,只不過使用的方法是相反的,並且返回的是yes或no
/hello/.test(str); 有的話返回true,無的話返回false
2.exec()
和math的作用差不多,使用相反,效果一樣
/hello/.exec(str);在str中查找匹配/hello/的字符串,有的話返回對應的結果和index等信息,沒有的話返回null
模式匹配
帶方括號的[], ——– 范圍
[abc]: 查找在方括號中的任意一個字符;
[^abc]: 查找不在方括號中的任意一個字符;
[0-9][a-z]: 查找0-9中的任意一個數字加[a-z]中的任一字符的組合
原字符 ——– 大范圍
. 任意單個字符(略略略,點點點)
\w 字母數字下划線((word)低調的小寫)
\W 和\w是相反的(傲慢與偏見的大寫)
\d 數字((digit)低調的小寫)
\D 非數字(傲慢也偏見的大寫)
\s 空格(spache)
\S 傲慢的大S
高級匹配 ——– 修飾符
n* n的個數大於等於0
n? n的個數大於等於0小於等於1
n+ n的個數大於等於1
n{233} n的個數等於233的字符串
n{1,233} n的個數大於等於1,小雨等於233的字符串
n{1,} n的格個數大於等於1
n$ 匹配以n結尾的字符串
^n 匹配以n開頭的字符串
貪婪模式 —— (高級模式后面加?即可)
常用正則表達式
手機號: /(^1[3|4|5|7|8][0-9]{9}$)/
ip地址:/\d+\.\d+\.\d+\.\d+/g
域名:/http:\/\/[\w|.]+\w+/g
手機號碼:/1[3|4|5|6|7|8][\d]{9}/g
匹配漢字:/[\u4e00-\u9fa5]/g
匹配郵箱:/\w{1,16}@\w{1,16}\.\w{1,8}/g
備注
/g 表示該表達式將用來在輸入字符串中查找所有可能的匹配,返回的結果可以是多個。如果不加/g最多只會匹配一個
/i 表示匹配的時候不區分大小寫
/m 表示多行匹配,什么是多行匹配呢?就是匹配換行符兩端的潛在匹配。影響正則中的^$符號
