正則表達式的規則
一個具有特殊意義的字符串。
正則表達式在多種語言中都可以使用,
如:在 Java 中可以用正則表達式,在JavaScript 中也可以使用正則表達式。
\d 數字
\D 非數字
\w 單詞:a-zA-Z0-9_ //注意包括下划線
\W 非單詞
. 通配符,匹配任意字符
{n} 匹配 n 次
{n,} 大於或等於 n 次
{n,m} 在 n 和 m 之間
+ 1~n 次
* 0~n 次
? 0~1 次
^ 匹配開頭
$ 匹配結尾
[13579] 匹配 1 或 3 或 5 或 7 或 9,即這 5 個數字之一
[0-9] 匹配 1 到 9,即 0,1,2,3,4,5,6,7,8,9 中的數字之一
正則表達式的創建方式
方式一
var reg = new RegExp("正則表達式");
說明:正則表達式在 JS 中是一個對象。Regular Expression。
方式二
var reg = /正則表達式/;
說明:以/開頭,以/結尾,中間是正則表達式。
//兩種方式的區別
1_在 JS 中,正則表達式的兩種聲明方式對於“\d、\D”之類的匹配模式中,
方式一:需要轉義;如:new RegExp(“\\d”)
方式二:無需轉義。如:/\d/
2_方式一:
支持字符串拼接,支持變量,更加靈活;如:new RegExp(“\\d”+變量)
方式二:
對於固定的表達式,書寫起來方便快捷、更加直觀。如:/\d{3}/
匹配模式
i :忽略大小寫比較
匹配模式的兩種寫法
var reg = new RegExp("正則表達式", "匹配模式");
如:new RegExp("abc","i");
var reg = /正則表達式/匹配模式; 如:/abc/i
正則表達式中的常用方法
boolean test("字符串") 如果正則表達式匹配字符串,返回 true,否則返回 false
var reg1 = new RegExp("\\d{3}");
var result1 = reg1.test("123");
var reg2 = /\d{3}/;
var result2 = reg2.test("123");
var reg3 = /java/i;
var result3 = reg3.test("Java");
JS 匹配上與 Java 中的不同
Java 默認情況下必須要精確匹配,
而在 JS 中默認是模糊匹配,只要字符串包含了正則表達式的內容就返回 true。
正則表達式 匹配字符串 Java 中匹配結果 JavaScript 中匹配結果
\d{3} a123b false true
^\d{3} 123b false true
\d{3}$ a123 false true
^\d{3}$ 推薦 123 true true
^\d{3}$ 123a123 false false
請在 JS 中使用正則表達式進行驗證。
用戶名:只能由英文字母和數字組成,長度為 4~16 個字符,並且以英文字母開頭
/^[a-zA-Z][a-zA-Z0-9]{3,15}$/
密碼: 數字 6-20 個字符
/^[0-9]{6,20}$/
生日:生日的年份在 1900~2009 之間,
生日格式為 1980-5-12 或 1988-05-04 的形式,
/^((19\d{2})|(200\d))-(0?[1-9]|1[0-2])-(0?[1-9]|[1-2]\d|3[0-1])$/
匹配中文字符的正則表達式: /^[\u4e00-\u9fa5]$/
匹配雙字節字符(包括漢字在內):/^[^\x00-\xff]$/
//可以用來計算字符串的長度(一個雙字節字符長度計2,ASCII字符計1)
匹配空白行的正則表達式:/^\n\s*\r$/ //可以用來刪除空白行
匹配HTML標記的正則表達式:/^<(\S*?)[^>]*>.*?</\1>|<.*? />$/
匹配首尾空白字符的正則表達式:^\s*|\s*$
//可以用來刪除行首行尾的空白字符(包括空格、制表符、換頁符等等)
匹配Email地址:/^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/
電子郵箱:符合郵箱地址的格式
/^\w+@\w+(.\w{2,3}){1,2}$/
\w 等價於[a-zA-Z0-9_]
匹配網址URL的正則表達式:/^[a-zA-z]+://[^\s]*$/
匹配帳號是否合法(字母開頭,允許5-16字節,允許字母數字下划線):
^[a-zA-Z][a-zA-Z0-9_]{4,15}$
匹配國內電話號碼:/^\d{3}-\d{8}|\d{4}-\d{7}$/
//匹配形式如 0511-4405222 或 021-87888822
匹配騰訊QQ號:/^[1-9][0-9]{4,}$/ //騰訊QQ號從10000開始
匹配中國郵政編碼:/^[1-9]\d{5}(?!\d)$/
//中國郵政編碼為6位數字
匹配身份證:/^\d{15}|\d{18}$/
//中國的身份證為15位或18位
匹配ip地址:/^\d+\.\d+\.\d+\.\d+$/
//提取ip地址時有用
匹配特定數字:
^[1-9]\d*$ //匹配正整數
^-[1-9]\d*$ //匹配負整數
^-?[1-9]\d*$ //匹配整數
^[1-9]\d*|0$ //匹配非負整數(正整數 + 0)
^-[1-9]\d*|0$ //匹配非正整數(負整數 + 0)
^[1-9]\d*\.\d*|0\.\d*[1-9]\d*$ //匹配正浮點數
^-([1-9]\d*\.\d*|0\.\d*[1-9]\d*)$ //匹配負浮點數
^-?([1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0)$ //匹配浮點數
^[1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0$ //匹配非負浮點數(正浮點數 + 0)
^(-([1-9]\d*\.\d*|0\.\d*[1-9]\d*))|0?\.0+|0$ //匹配非正浮點數(負浮點數 + 0)
匹配特定字符串:
^[A-Za-z]+$ //匹配由26個英文字母組成的字符串
^[A-Z]+$ //匹配由26個英文字母的大寫組成的字符串
^[a-z]+$ //匹配由26個英文字母的小寫組成的字符串
^[A-Za-z0-9]+$ //匹配由數字和26個英文字母組成的字符串
^\w+$ //匹配由數字、26個英文字母或者下划線組成的字符串