【正則表達式】正則表達式進階

簡單類:/abc/

必須是完整的,只能多不能少;即只需包含abc就可以。

  • /abc/.test(str),判斷str是否包含abc,如果包含則返回true,否則就返回false;
console.log(/chaoge/.test("chaoge"));   //true
console.log(/chaoge/.test("chaog"));    //false
console.info(/chaoge/.test("chacoge")); //false

預定義類/[abc]/

只要包含裏面的任何一個就可以。

  • /[abc].test(str)/:判斷str是否包含a、b、c三個中的一個,包含了就返回true,否則返回false。
console.info(/[abc]/.test("abcd"));     //true
console.info(/[abc]/.test("abc"));      //true
console.info(/[abc]/.test("a"));        //true
console.info(/[abc]/.test("qqq"));      //false

負向類(不能是其中的整體或者一部分)

必須是在中括號內,前面加個元字符^進行取反,不是括號裏面的字符(一部分也不行)。

console.info(/[^abc]/.test('abc'));     //false,是abc的整體
console.info(/[^abc]/.test('a'));       //false,屬於abc的一部分
console.info(/[^abc]/.test('abcd'));    //true,比abc更多
console.info(/[^abc]/.test('aw'));      //true,交集
console.info(/[^abc]/.test('ww'));      //true,比abc更多
  • 提示:這個^寫在[]內才具有負向類的功能

範圍類

有時匹配的東西過多,而且類型又相同,全部輸入太麻煩,我們可以在中間加個橫線。

  • 例如/a-m/表示a、b、c……m等字母只要包含一個就行。
console.info(/a-m/.test("a-m"));    //true,沒有中括號,表示必須包含a-m
console.info(/a-m/.test("a-"));     //false,沒有中括號,表示必須包含a-m
console.info(/[a-m]/.test("gga"));  //true,只要包含一個就行

組合類

用中括號匹配不同類型的單個字符,有數字,有字幕,有特殊字符就需要使用到組合來完成。

  • /[a-m1-5]/.test(“b”):表示包含q、b、c….、m和1、2….、5等
console.info(/[a-m1-5]/.test("b"));
console.info(/[a-m1-5]/.test("2"));
console.info(/[a-m1-5]/.test("oooo"));

正則邊界

^會匹配行或者字符串的起始位置,這裏要注意的地方是^[]中才表示非,這裏表示開始。
$會匹配行或者字符串的結尾位置
^和’$’一起使用時,則表示必須是這個(精確匹配)

  • /^andy$/.test(str):要想返回true,則str必須是’andy’。
console.info(/^andy$/.test('andy'));   //true
console.info(/^aandy$/.test('andy'));  //false
console.info(/^andya$/.test('andy'));  //false
console.info(/^anady$/.test('andy'));  //false
console.info(/^ndy$/.test('andy'));    //false

量詞

  • *:重複零次或更多
  • +:重複一次或更多次
  • ?:重複零次或一次,要麼有,要麼沒有
  • {}:重複多少次的意思,可以有多少個的,比如你的銀行卡密碼只能是6位,則用{6}
    • {n}:n次(x=n)
    • {n,}:重複n次或更多(x>=n)
    • {n,m}:重複出現的次數比n多但比m少(n<=x<=m)
    • *:{0,}
    • +:{1,}
    • ?:{0,1}
      x|y:表示x或者y,注意在正則表達式中是沒有&的。
      ():提高權限,有限計算。

replace函數

replace()方法用於在字符串中用一些字符替換另一些字符,或替換一個與正則表達式匹配的子串。return返回的是新字符串。


☆ 需要匹配的對象.replace(正則式/匹配模式,替換的目標字符) ☆


  • 正則表達式的匹配模式支持的2個標誌
    • g:表示全局模式(global),即將需要匹配的對象全部尋找匹配。
    • i:表示不區分大小寫(ease-insensitive)模式,在確定匹配對象時忽略大小寫查找替換。
var txt = "today is a fine day!";
        console.info(txt.replace(/today/,"tomorrow"));              //tomorrow is a fine day!
        console.info(txt);                                          //txt不變,today is a fine day!

        var txt1 = "today is a fine day!today is a fine day!";
        console.info(txt1.replace(/today/g, "tomorrot"));           //tomorrot is a fine day!tomorrot is a fine day!

        var txt2 = "JavaScript is a fine";
        console.info(txt2.replace(/javascript/,"javascript"));      //JavaScript is a fine
        console.info(txt2.replace(/javascript/i,"javascript"));     //javascript is a fine

封裝自己的trim函數

function trim(str) {
    return str.replace(/(^\s+)|(\s+$)/g,"");       // 去掉前面和後面的空格
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章