javascript
JavaScript 正则表达式
JavaScript? 正則表達式
版權聲明:未經授權,嚴禁轉載!
正則表達式?
什么是正則表達式
正則表達式是用來描述一種特定格式的字符規則的表達式。
正則表達式常用語在一段文本中搜索,匹配或者替換特定形式的文本。如:詞語出現的頻率統計、驗證字符串是否符合郵箱格式、屏蔽一篇帖子中的限制性詞語等。也叫做“模式匹配”。
正則表達式由一些普通字符和一些元字符及特殊符號組成。普通字符包括大小寫的字母和數字,而元字符則具有特殊的含義。
如何定義
使用 // 來表示一個正則表達式。
最簡單的正則表達式,就是字符串本身,比如: /hello/ 。
可以使用元字符來匹配某一些字符串,比如: /1[3579]\d{9}/ 。
正則表達式中有些字符有特殊的語法含義,是不能夠直接使用的,必須使用 \ 進行轉以后才可以使用。
.? \? /? *? ?? +? [? (? )? ]? { ? }? ^? $ ? |
修飾符
模式匹配中可以使用如下三個屬性修飾符。
字符集
?正則表達式使用如下語法匹配一個范圍內的字符。
元字符
正則表達式中可以使用如下元字符來進行簡化。
量詞
可以使用如下特殊字符定義前一個字符的出現次數。
選擇和分組
使用如下語法定義子表達式分組或選擇。
?
指定匹配位置
可以使用如下字符進行指定位置的匹配
? ?
正則表達式 - 查找 search() / match()
學習案例代碼
var str = "Hi,2017年6月20日,我要和Mia、Tom、Jimmy去旅游" +"啦~~23333333333~~你要去的話就和我或Mia聯系,我們的電話是" +":13519005678/15898765432。";// search() 查找。找到第一次出現指定子字符串下標的位置,如果沒找到返回-1. // 查找str中有沒有mia console.log(str.search("mia")); // -1 普通字符串查找,只能找到完全相同的。 console.log(str.search("Mia")); // 17 普通字符串查找,只能找到完全相同的。// 使用正則表達式 字符不需要加引號,普通字符串匹配需要加 console.log(str.search(/mia/)); // -1 console.log(str.search(/mia/i)); // i表示不區分大小寫 17// match() 匹配,返回找到的指定子字符串組成的數組 console.log(str.match("Mia")); // 普通的字符串查找必須相同,默認只能返回一次 console.log(str.match(/mia/i)); // 普通的字符串查找必須相同,默認只能返回一次 console.log(str.match(/mia/ig)); // g 全局匹配,不只匹配一次// 匹配 我/你 console.log(str.match(/[我你]/g)) // []表示匹配中括號中任意一個字符。匹配字符串中所有的 “我” 和 “你”// 匹配年份 // 匹配任意一個數字 console.log(str.match(/[0-9]/g)); // [0-9]表示匹配任意一個數字。 console.log(str.match(/\d/g)); // \d表示匹配任意一個數字。 console.log(str.match(/[0-9][0-9][0-9][0-9]/g)); // 匹配任意連續四個數字。 console.log(str.match(/\d\d\d\d/g)); // 匹配任意連續四個數字。// 匹配連續數字 console.log(str.match(/[0-9]{4}/g)); // 匹配連續四個數字 console.log(str.match(/\d{4}/g)); // 匹配連續四個數字 console.log(str.match(/(19|20)\d{2}年/g)); // 匹配年份 19XX年 或者 20XX年
?
?正則表達式 - 分割 split()
?學習代碼案例
var str ="tom , jerry, mia, jack, Tom ,mary , jimmy";// 將所有的人名存進一個數組 console.log(str.split(",")); // 使用普通字符串,只能識別一種分隔符。// 使用正則表達式 console.log(str.split(/[,,]/)); // 識別任意一種逗號。 console.log(str.split(/\s*[,,]\s*/)); // 包含逗號前后的0個或多個空格。// 將 str 字符串的每個字符分開 var str2 = "Hello World"; console.log(str2.split("")); console.log(str2.split(/\s*/)); // 以空格或非空格分割
正則表達式 - 替換 replace()
?學習代碼
var str = "tom , jerry, mia, jack, Tom ,mary , jimmy";// 將所有的逗號改為兩個空格。 console.log(str.replace(",", " ")); // 普通字符串 默認只能替換第一個。// 使用正則表達式 console.log(str.replace(/\s*[,,]\s*/g, " "));// 將 tom 替換為 Alice console.log(str.replace(/tom/ig, "Alice"));// 找到說有的英文名稱 console.log(str.match(/[A-z]{2,}/g)) console.log(str.match(/[A-z]+/g))console.log(str.replace(/[A-z]+/g, "***"));// 將所有的英文名稱首字符替換成大寫 console.log(str.replace(/[A-z]+/g, function (word) {var r = word.replace(word[0], word[0].toUpperCase());return r; }));// 去掉所有空格 var str1 = "a b c d e f"; console.log(str1.replace(/\s+/g,""));
正則表達式對象?
?
?
?
?
var s1="Hello,今天是2017.6.20,我和tom、jerry在一起玩耍。";//匹配hellovar reg1=/hello/ig;var reg2=new RegExp("hello","ig");console.log(s1.match(reg1));console.log(s1.match(reg2));//匹配連續4個數字var reg3=/[0-9]{4}/g;var reg4=new RegExp("[0-9]{4}","g");var reg5=/\d{4}/g;var reg6=new RegExp("\\d{4}","g");//使用\開頭的元字符,需要再次使用\轉義,即雙斜杠 console.log(s1.match(reg3));console.log(s1.match(reg4));console.log(s1.match(reg5));console.log(s1.match(reg6));//匹配一個.var reg7=/\./g;var reg8=new RegExp("\\.","g");//雙斜杠轉義 console.log(s1.match(reg7));console.log(s1.match(reg8));
?
//test(),用于檢測一個字符串是否匹配某個模式,若匹配,返回true;若不匹配,返回false//驗證密碼:要求,密碼必須是6位數字var s1="123456";// var reg=/\d{6}/;//部分匹配var reg=/^\d{6}$/;//完全匹配,^表示匹配字符串的開頭,$表示匹配字符串的結構,驗證時需要完全匹配console.log(reg.test(s1));
?
//exec(),查找字符串中可以匹配某個模式的子字符串,返回一個關聯數組,保存著子字符串及所在位置,若未找到,返回null//每次只能找一個,重復調用可以自動向后查找//屬性lastIndex中保存著下一次開始查找的位置,初始值為0var str="no zuo No die No can no chaochao";var reg=/no/ig;//找到所有的no及所在位置// console.log(reg.lastIndex);// console.log(reg.exec(str));// console.log(reg.lastIndex);// console.log(reg.exec(str));// console.log(reg.lastIndex);// console.log(reg.exec(str));// console.log(reg.lastIndex);// console.log(reg.exec(str));// console.log(reg.lastIndex);// console.log(reg.exec(str));// console.log(reg.lastIndex);// console.log(reg.exec(str));// console.log(reg.lastIndex);// console.log(reg.exec(str));// console.log(reg.lastIndex);do{var arr=reg.exec(str);if(arr==null) break;// console.log(arr);console.log("在"+arr["index"]+"處找到關鍵詞:"+arr[0]+",下一次開始查找的位置為:"+reg.lastIndex);}while(true)
?
?
結束了吧!哎!
?
轉載于:https://www.cnblogs.com/wjw1014/p/8980019.html
總結
以上是生活随笔為你收集整理的JavaScript 正则表达式的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: hdoj-1715-大菲波数(大斐波那契
- 下一篇: BZOJ 1821: [JSOI2010