正則表達式(英語:Regular Expression)正則表達式
本質:用來記錄文本規則的代碼 函數
應用很是普遍,如:表單驗證、高級搜索、生化科學 測試
(有必定難度,不要求很是熟練,但至少會表單驗證) spa
正則表達式的特色是:regexp
1. 靈活性、邏輯性和功能性很是的強;對象
2. 能夠迅速地用極簡單的方式達到字符串的複雜控制。字符串
3. 對於剛接觸的人來講,比較晦澀難懂。string
好比:io
匹配國內電話號碼:\d{3}-\d{8}|\d{4}-\d{7}console
驗證手機號:
/^((13[0-9])|(15[^4,\D])|(18[0,5-9]))\d{8}$/
很難記住。
在體會以前,咱們先認識幾個地方。
正則表達式的組成就是:
有一些普通字符和元字符組成,普通字符就是字母和數字,元字符具備特殊意義的字符
匹配騰訊QQ號:[1-9][0-9]{4,}
評註:騰訊QQ號從10000開始
好比 \d
預約義類: 表示數字 [0-9]
test() 方法
正則對象方法,檢測測試字符串是否符合該規則,返回true和false,參數(測試字符串)
使用語法:
表達式.test("要驗證的內容");
console.log(/\d/.test(567));
驗證 567 符不符合 \d 的規範
建立正則表達式的兩種方式
1.經過構造函數定義
var 變量名= new RegExp(/表達式/);
2.經過直接量定義 (較爲經常使用)
var 變量名= /表達式/;
console.log(regexp1.test(345));
console.log(/\d/.test(567));
. [^\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] 非單詞字符
/string/.test(「string」); 必須是完整的 只多不能少
好比 /andy/.test(「andy」) // true
/andy/.test(「andyliu」) // true
/andy/.test(「an」) // false
也就是說,只要後面的包含了andy 就闊以了
/[string]/.test(「string」); 只要包含裏面的任何字母就能夠
console.log(/[andy]/.test("andy")); // true
console.log(/[andy]/.test("an"));// true
console.log(/[andy]/.test("ady"));// true
console.log(/[andy]/.test("anll"));// true
console.log(/[andy]/.test("assd"));// true
console.log(/[andy]/.test("ss"));// false
括號內,前面加個元字符^進行取反,表示匹配不能爲括號裏面的字符。
console.log(/[^abc]/.test('a'));
console.log(/[^abc]/.test('gg'));
注意: 這個符號 ^ 必定是寫到方括號裏面
有時匹配的東西過多,並且類型又相同,所有輸入太麻煩,咱們能夠在中間加了個橫線
console.log(/[a-z]/.test('1111'));
console.log(/[A-Z]/.test('aa'));
用中括號匹配不一樣類型的單個字符。
console.log(/[a-m1-5]/.test("b"))//true
^ 會匹配行或者字符串的起始位置
注:^在[]中才表示非!這裏表示開始
$ 會匹配行或字符串的結尾位置
^$在一塊兒 表示必須是這個(精確匹配)
// 邊界能夠精確說明要什麼
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 這四個字母
* (貪婪) 重複零次或更多 (>=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
匹配騰訊QQ號:[1-9][0-9]{4,}
評註:騰訊QQ號從10000開始