1. 程式人生 > >JavaScript 正則表示式RegExp(text方法/內部類/邊界/量詞/優先順序/replace/trim)

JavaScript 正則表示式RegExp(text方法/內部類/邊界/量詞/優先順序/replace/trim)

1. 概述 英語:Regular Expression 本質:用來記錄文字規則的程式碼 (為字串定義規則,為輸入內容定義規則!)       應用非常廣泛,如:表單驗證、高階搜尋、生化科學       (有一定難度,不要求非常熟練,但至少會表單驗證)  2. 正則表示式的組成 由一些普通字元和元字元組成,普通字元就是字母和數字,元字元具有特殊意義的字元 匹配騰訊QQ號:[1-9][0-9]{4,} 評註:騰訊QQ號從10000開始  3. 正則表示式宣告 ① 通過建構函式定義 
var 變數名= new RegExp(/表示式/); 
② 通過直接量定義  (較為常用)
var 變數名= /表示式/;
console.log(regexp1.test(345));
console.log(/\d/.test(567));//直接使用

4. test() 方法           正則物件方法,檢測測試字串是否符合該規則,返回true和false,引數(測試字串) 
Boolean = 表示式.test("要驗證的內容"); 
console.log(/\d/.test(567));//驗證567符不符合 \d 的規範

5. 正則內部類 (幫我們寫好的工具直接使用) ① 預定義類                                                         . [^\n\r] 除了換行和回車之外的任意字元(“”不行)  \d [0-9] 數字字元  \D [^0-9]    非數字字元  \s [ \t\n\x0B\f\r]  空白字元   \S [^ \t\n\x0B\f\r]  非空白字元  \w [a-zA-Z_0-9]  單詞字元  \W [^a-zA-Z_0-9]     非單詞字元   特殊字元: \t     /\t/ 製表符 \n     /\n/ 換行符 \r     /\r/ 回車符 \f     /\f/ 換頁符 \b     /\b/ 與回退字元 \v     /\v/ 垂直製表符 \0     /\0/ 空字元 回車和換行是兩個東西,就像古老的打字機一樣。 ② 簡單類
1)什麼都不加直接寫:只要完整包含就可以了 /string/.test(“string”);    必須是完整的,只多不能少
/andy/.test(“andy”); // true
/andy/.test(“andylv”);  // true
/andy/.test(“an”);   // false

2)在[ ]裡寫:只要包含裡面的任何一個就可以 /[string]/.test(“string”);    只要包含裡面的任何一個就可以
/[andy]/.test("andy");   // true
/[andy]/.test("an"); // true
/[andy]/.test("ady"); // true
/[andy]/.test("anll"); // true
/[andy]/.test("assd"); // true
/[andy]/.test("ss"); // false
/[3aH8]/.test("ss"); // false
③ 負向類(不能是其中的整體或者一部分) 中括號內,前面加個元字元^進行取反,不是括號裡面的字元(一部分也不行)。 (可以不夠,但是不能多)(不夠和正好,返回false;多了或者沒有返回true)
console.log(/[^abc]/.test('a')); //false
console.log(/[^abc]/.test('gg'));//true
console.log(/[^abc]/.test('abcgg'));//true
注意:  這個符號 ^  一定是寫到方括號裡面 ④ 範圍類 有時匹配的東西過多,而且型別又相同,全部輸入太麻煩,我們可以在中間加了個橫線
console.log(/[a-z]/.test('1111'));
console.log(/[A-Z]/.test('aa'));
⑤ 組合類 用中括號匹配不同型別的單個字元。
console.log(/[a-m1-5]/.test("b")); //true

6. 正則邊界 ^ 會匹配行或者字串的起始位置 注意:^在[ ]中才表示非,這裡表示開始 $ 會匹配行或字串的結尾位置 ^$在一起 表示必須是這個(精確匹配) // 邊界可以精確說明要什麼
console.log(/lily/.test("lilyname")); // true
console.log(/^lily$/.test("lily"));  // true
console.log(/^lily$/.test("ly"));   // false
console.log(/^andy$/.test("andy"));  // true, 必須是 andy 這四個字母
7. 量詞 (多個字母,重複最後一個)  *       重複零次或更多   (>=0)  +       重複一次或更多次  (>=1)  ?       重複零次或一次   (0||1)  要麼有 要麼沒有 { }  重複多少次的意思   可以有多少個   您的銀行卡密碼只能是 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(沒有&,用的是,代替的)    ()提高許可權,有限計算 8. 正則優先順序 ① ()   ②  ^$    ③  |   ④  量詞 9. replace 函式 replace() 方法用於在字串中用一些字元替換另一些字元,或替換一個與正則表示式匹配的字串。 注意:返回的是新的字串,原來的還是沒變
str2 = str1.replace(/要替換/ig,“替換成”);
i : 忽略大小寫 g: 全域性替換 10. trim 函式 不相容ie678,需要自己封裝
function trim(str) {
    return str.replace(/(^\s+)|(\s+$)/g,"");  // 去掉前面和後面的空格
}