js正則表達式


正則表達式的規則
一個具有特殊意義的字符串。
正則表達式在多種語言中都可以使用,

如:在 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個英文字母或者下划線組成的字符串


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM