【正則表達式】簡單入門介紹

認識正則

  • 正則表達式(英語):Regular Expression;
  • 本質:用來記錄文本規則的代碼;
  • 應用場景:表單驗證、高級搜索、生化科學等。

正則構成

  • 由一些普通字符和元字符組成,普通字符就是字母和數字,元字符具有特殊意義的字符,匹配騰訊QQ號:[1-9][0-9]{4,}【五位數字以上,即從10000開始】

正則聲明

  • 創建正則表達式的兩種方式:
    • 1、通過構造函數定義
      • var 變量名 = newRegExp(/表達式/);
    • 2、通過直接量定義
      • var 變量名 = /表達式/;

認識正則

  • \d:預定義類:表示數字
  • test()方法:
    • 正則對象方法,檢測字符串是否符合該規則,返回true,和false,參數(測試字符串)。

字符類 — 預定義類

預定義類 正則表達 中文解釋
. [^\n\r] 除了換行和回車之外的任意字符
\d [0-9] 數字字符
\D [^0-9] 非數字
\s [\t\n\x0B\f\r] 空白字符
\S [^ \t\n\x0B\f\r] 非空白字符
\w [a-zA-Z0-9] 單詞字符
\W [^a-zA-Z_0-9] 非單詞字符

特殊字符

特殊字符 正則表達 中文解釋
\t /\t/ 製表符
\n /\n/ 換行符
\r /\r/ 回車符
\f /\f/ 換頁符
\b /\b/ 與回退字符
\v /\v/ 垂直製表符
\0 /\0/ 空字符

字符類 — 簡單類

  • []整體對應一個字符,如[abc],裏面的內容表示該位置可以是哪些字符,即測試的字符只要包含裏面的任意一個就可以。簡單類還有一個/abc/:表示至少包含abc,比如abcd

字符類 — 負向類

括號內,前面加個元字符^進行取反,表示匹配不能爲括號裏面的字符。

console.info(/[abc]/.test('abc'));//true,包含子集的字符串是對的
console.info(/[^abc]/.test('abc'));//false,是子集那麼就返回false

注意:這裏的^是寫在[]裏面的,因爲在//裏面表示正則的開始。

字符類 — 範圍類

  • 有時匹配的東西過多,而且類型又不同,全不輸入太麻煩,我們可以在中間加一箇中劃線-表示範圍區間。
console.info(/[a-z]/.test('11111'));    //false
console.info(/[A-A]/.test('A1'));       //true

字符類 — 組合類

  • 用中括號匹配不同類型的單個字符。
console.info(/[a-m1-5]/.test('b'));         //true
console.info(/[a-m1-5\n]/.test('2'));       //true

邊界

  • ^會匹配行或者字符串的起始位置
  • $會匹配行或字符串的結尾位置
  • ^$一起使用,表示必須這個(精確匹配)

量詞

  • *:重複零次或更多(>=0),也可以用{0,}表示
  • +:重複一次或更多次,也可以用{1,}表示
  • ?:重複零次或一次,也可以用{0,1}表示
  • {n}:n次(x=n)
  • {n,}:重複n次或更多(x>=n)
  • {n,m}:重複出現的次數比n多但比m少(n<=x<=m)

案例

  • 1、匹配座機號
    • /(^0\d{2}-8\d{7}$)|(^0\d{3}-3\d{6}$)/
  • 2、匹配中文【2-4位】
    • /^[\u4e00-\u9fa5]{2,4}$/
  • 3、驗證QQ號:
    • /^[1-9][1-9{4,}$]/
  • 4、驗證手機號
    • /((13[0-9])|(15[^4,\D])|(18[0-9]))\d{8}$/
  • 5、驗證郵箱
    • /^[\w\-\.]+\@[\w]+\.[\w]{2,4}$/
  • 6、驗證座機號
    • /^0\d{2}-\d{8}$|^0\d{3}-\d{7}$/
  • 7、驗證用戶名
    • /^[a-zA-Z0-9_-]{3,16}$/
  • 8、驗證密碼
    • /^[\$a-zA-Z0-9_-]{6,18}$/

匹配密碼強度

  • 區分大小寫英文字母
    • /^([a-z].*[A-Z])|([A-Z].*[a-z])$/
  • 帶有字母和數字
    • /^([a-z].*[0-9])|([A-Z].*[0-9])|[0-9].*[a-zA-Z]$/
  • 字母數字中間加下劃線(想要什麼中括號中加)
    • /^[A-Za-z0-9]+[_$][A-Za-z0-9]*$/

replace函數

  • replace()方法用於在字符串中用一些字符替換另一些字符,或替換一個與正則表達式匹配的子串。
    • var str2 = str1.replace(/要替換/ig,”替換成”);
    • i:表示忽略大小寫,g表示全局替換。

自定義trim函數【IE6、7、8不支持】

input.onblur = function(){
    var val = this.value;
    if(trim(val) == "") {
        return alert("不能輸入爲空");
    }
    alert("成功!" + trim(val) + "1");
}
function trim(str) {
    //將字符串的前面和後面的空格去除掉
    return str.replace(/(^\s+)|(\s+$)/g,"");
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章