JavaScript正則表達式


JavaScript正則表達式
  01:建立正則對象方式1
// 參數1 正則表達式(不能有空格)
// 參數2 匹配模式:經常使用g(全局匹配;找到全部匹配,而不是在第一個匹配後中止)和i(忽略大小寫)

// 用戶名只能是英文字母、數字和_,而且首字母必須是英文字母。長度最短不能少於6位 最長不能超過12位。

// 建立RegExp對象方式(逗號後面不要加空格),假如匹配用戶名是隻能字母開頭後面是字母加數字加下劃線的5到11位的
  var reg1 = new RegExp("^[a-zA-Z][a-zA-Z0-9_]{5,11}$"); //注意,寫規則的時候,裏面千萬不能有空格,否則匹配不出來你想要的內容,除非你想要的內容自己就想要空格,
  好比最後這個{5,11},裏面不能有空格 // 匹配響應的字符串   var s1 = "bc123"; //RegExp對象的test方法,測試一個字符串是否符合對應的正則規則,返回值是true或false。   reg1.test(s1); // true

   02:建立方式2,簡寫的方式正則表達式

// /填寫正則表達式/匹配模式(逗號後面不要加空格)
var reg2 = /^[a-zA-Z][a-zA-Z0-9_]{5,11}$/;

reg2.test(s1);  // true

注意,此處有坑:若是你直接寫一個reg2.test(),test裏面啥也不傳,直接執行,會返回一個true,用其餘的正則規則,可能會返回false,
是由於,test裏面什麼也不傳,默認傳的是一個undefined,而且給你變成字符串undefined,因此可以匹配undefined的規則,就能返回true,
否則返回false

  03:String對象與正則結合的4個方法函數

var s2 = "hello world";

s2.match(/o/g);         // ["o", "o"]             查找字符串中 符合正則 的內容 ,/o/g後面這個g的意思是匹配全部的o
s2.search(/h/g);        // 0                      查找字符串中符合正則表達式的內容位置
s2.split(/o/g);         // ["hell", " w", "rld"]  按照正則表達式對字符串進行切割
s2.replace(/o/g, "s");  // "hells wsrld"          對字符串按照正則進行替換

// 關於匹配模式:g和i的簡單示例
var s1 = "name:Alex age:18";

s1.replace(/a/, "哈哈哈");      // "n哈哈哈me:Alex age:18"
s1.replace(/a/g, "哈哈哈");     // "n哈哈哈me:Alex 哈哈哈ge:18"      全局匹配
s1.replace(/a/gi, "哈哈哈");    // "n哈哈哈me:哈哈哈lex 哈哈哈ge:18"  不區分大小寫

ps: 注意事項:測試

注意事項01:
若是regExpObject帶有全局標誌g,test()函數不是從字符串的開頭開始查找,而是從屬性regExpObject.lastIndex所指定的索引處開始查找。 該屬性值默認爲0,因此第一次仍然是從字符串的開頭查找。 當找到一個匹配時,test()函數會將regExpObject.lastIndex的值改成字符串中本次匹配內容的最後一個字符的下一個索引位置。 當再次執行test()函數時,將會從該索引位置處開始查找,從而找到下一個匹配。 所以,當咱們使用test()函數執行了一次匹配以後,若是想要從新使用test()函數從頭開始查找,則須要手動將regExpObject.lastIndex的值重置爲 0。 若是test()函數再也找不到能夠匹配的文本時,該函數會自動把regExpObject.lastIndex屬性重置爲 0。 var reg3 = /foo/g; 此時 regex.lastIndex=0 reg3.test('foo'); // 返回true 此時 regex.lastIndex=3 reg3.test('xxxfoo'); // 仍是返回true 因此咱們在使用test()方法校驗一個字符串是否徹底匹配時,必定要加上^和$符號,把匹配規則寫的肯定一些,儘可能不用上面這種的寫法/xxx/。 -----------------------------------------------------------------------------------------------------------------
注意事項02: // 當咱們不加參數調用RegExpObj.test()方法時, 至關於執行RegExpObj.test(undefined),而後將這個undefined又轉爲字符串"undefined",去進行匹配了,
而且/undefined/.test()默認返回true。 var reg4 = /^undefined$/; reg4.test(); // 返回true reg4.test(undefined); // 返回true reg4.test("undefined"); // 返回true
相關文章
相關標籤/搜索