正則表示式(一)
一、概述
描述:正則表示式是一種檢索字串的規則,表現為字串的樣子
原理:通過【引數字串】設定檢索規則,在【指定字串】中檢索符合規則的字串
作用:可以用來進行文字搜尋和文字替換
語法:/正則表示式主體/修飾符(可選)
本質:正則表示式本質上是物件型別,只不過表現為字串的樣子
例子:
<script> //規則:檢索beixi字串 var reg1 = /beixi/; //規則:忽略大小寫的,檢索beixi字串 var reg2 = /beixi/i; console.log(reg1); console.log(reg2); console.log(typeof reg1); console.log(typeof reg2); </script>
二、常見的方法
正則表示式在實際開發中一般不會單獨使用,而是會配合一些方法來完成某種功能;因為正則表示式的作用是對字串進行操作,所以一般在實際開發中正則表示式會配合字串的search、replace方法來使用
1.search()方法
描述:用於檢索與正則表示式相匹配的子字串,並返回子字串的起始位置(首次出現的位置)
注意:
a.如果能找到返回的是第一次出現的下標
b.如果查詢失敗,返回-1
例子:
<script> var str = 'hello World! goodbye world!'; var index = str.search(/world/i); var index1 = str.search(/worlw/i); console.log(index); console.log(index1); </script>
2.replace()方法
描述:讓replace根據引數一的規則進行查詢,並將(滿足規則一的所有的內容)替換為引數二
注意:replace方法本身不會改變原字串,而是會生成新的字串
<script> var str = 'hello World! goodbye world!'; //在全局裡面去尋找,並且忽略大小寫 var newStr = str.replace(/world/gi, 'sxt'); console.log(newStr); console.log(str); </script>
3.match()方法
描述:
- a.match能夠匹配,符合引數規則的字串第一次出現的資訊
<script>
var str = 'hello world! goodbye world!';
var info = str.match(/world/i);
console.log(info);
</script>
- b.如果是全域性的:match能夠匹配(所有符合引數規則的子字串),並構成集合返回
<script>
var str = 'hello world! goodbye world!';
var info = str.match(/world/gi);
console.log(info);
</script>
三、修飾符(進階階段一)
描述:修飾符檢索字串時規則的制定者之一,修飾符表示應當按哪種規則進行檢索
型別:常見的修飾符有三種i/g/m
1.i:忽略大小寫的規則
<script>
var str = 'Hello Frank! GoodBye Frank!';
var first_index = str.search(/frank/i);
console.log(first_index);
</script>
2.g:正則檢索內容時採用全域性匹配,而不是找到第一個就停止
<script>
var str = 'hello world! hello xiaoming!hello xiaozhuang';
// var newStr=str.replace('hello','good');
while (str.indexOf('hello') != -1) {
str = str.replace('hello', 'good');
}
console.log(str);
var newStr = str.replace(/hello/g, 'good');
console.log(newStr);
</script>
3.m:代表(換行匹配兩端)的規則,對^$字元有影響
四、檢索模式(進階階段二)
描述:檢索模式是指(正則表示式主體)可以採用何種方式編寫,也是規則的制定者之一
型別:表示式模式、元字元模式、量詞模式
注意:
a.檢索模式中的幾種模式可以混合使用,來達到精確指定規則的效果
b.在正則主體當中一個[]代表一個字元,一個()代表一個片語
1.表達模式:
描述:表示式模式是指(通過表示式書寫來指定檢索規則)的方式
型別:[abc][0-9](m|n)
- a.[abc]模式
描述:本模式代表的規則是(存在於中括號中的字元,只要任意一個匹配到即滿足)
注意:本模式針對於正則主體,因此中括號必須寫在主體中次才生效
例子1:
<script>
var str = '12abc12ABC';
var newStr = str.replace(/[ab]/gi, '(frank)');
console.log(newStr);
var str = '你好,弗蘭克!再見,弗蘭克!';
var newStr = str.replace(/[弗][蘭][克]/g, '(frank)');
console.log(newStr);
</script>
例子 2:
<script>
var str = '12abc12ABC';
//規則:全域性忽略大小寫檢索兩個挨在一起的字元
// 第一個必須是1或者2,第二個必須是a或者b
var newStr = str.replace(/[12][ab]/gi, '(sxt)');
console.log(newStr);
//如果字串的首位是字母,就把它替換為0,否則不替換
var str = 'a123';
//得到字串的首位
var firstChar = str.substring(0, 1);
var newChar = firstChar.replace(/[abcdefghijklmnuvwxyz]/i, '0')
console.log(newChar);
</script>
-
b.[0-9]模式
在指定字串中進行檢索,查詢任何滿足[0-9]規則的字元或字串。該模式對字母也適用
描述:本模式代表的規則是(存在於範圍內,即滿足)
注意:範圍前面的必須小於後面的,否則報錯
例子:
<script>
var str = '12abc12ABC';
var newStr = str.replace(/[12][a-z]/gi, '(frank)');
console.log(newStr);
var str = 'a123';
//得到字串的首位
var firstChar = str.substring(0, 1);
var newChar = firstChar.replace(/[a-z]/i, '0')
console.log(newChar);
var str = '137abc125abc';
var newStr = str.replace(/[135][0-9]/gi, '(sxt)');
console.log(newStr);
</script>
-
c.(m|n)模式
描述:本模式代表的規則是(符合以|分隔的選項之一,即滿足)
注意:本模式不僅可以匹配字元,還可以匹配片語
例子:
<script>
var str = '12abc12abABC';
var newStr = str.replace(/(ab|ABC)/g, '(frank)');
console.log(newStr);
var password = '4123456';
var firstChar = password.substring(0, 1);
var index = firstChar.search(/[a-z]/i);
if (index == -1) {
console.log('合法');
} else {
console.log('不合法');
}
</script>
例子2:
<script>
//判斷密碼中是否包含字母
var pwd = '1234abd789';
if (pwd.search(/[a-z]/i) != -1) {
console.log('不合法');
} else {
console.log('合法');
}
var str = '[email protected]';
var three = str.substring(-7);
var index = three.search(/@qq.com/i);
</script>