認識正則
- 正則表達式(英語):Regular Expression;
- 本質:用來記錄文本規則的代碼;
- 應用場景:表單驗證、高級搜索、生化科學等。
正則構成
- 由一些普通字符和元字符組成,普通字符就是字母和數字,元字符具有特殊意義的字符,匹配騰訊QQ號:[1-9][0-9]{4,}【五位數字以上,即從10000開始】
正則聲明
- 創建正則表達式的兩種方式:
- 1、通過構造函數定義
- var 變量名 = newRegExp(/表達式/);
- 2、通過直接量定義
- var 變量名 = /表達式/;
- 1、通過構造函數定義
認識正則
\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,"");
}