JavaScript正則表示式
什麼是正則表示式?
- 正則表示式是由一個字元序列形成的搜尋模式。
- 當你在文字中搜索資料時,你可以用搜索模式來描述你要查詢的內容。
- 正則表示式可以是一個簡單的字元,或一個更復雜的模式。
- 正則表示式可用於所有文字搜尋和文字替換的操作。
正則表示式模式
方括號
方括號用於查詢某個範圍內的字元:
表示式 |
描述 |
查詢方括號之間的任何字元。 |
|
查詢任何不在方括號之間的字元。 |
|
[0-9] |
查詢任何從 0 至 9 的數字。 |
[a-z] |
查詢任何從小寫 a 到小寫 z 的字元。 |
[A-Z] |
查詢任何從大寫 A 到大寫 Z 的字元。 |
[A-z] |
查詢任何從大寫 A 到小寫 z 的字元。 |
[adgk] |
查詢給定集合內的任何字元。 |
[^adgk] |
查詢給定集合外的任何字元。 |
(red|blue|green) |
查詢任何指定的選項。 |
元字元
元字元(Metacharacter)是擁有特殊含義的字元:
元字元 |
描述 |
查詢單個字元,除了換行和行結束符。 |
|
查詢單詞字元。 |
|
查詢非單詞字元。 |
|
查詢數字。 |
|
查詢非數字字元。 |
|
查詢空白字元。 |
|
查詢非空白字元。 |
|
匹配單詞邊界。 |
|
匹配非單詞邊界。 |
|
\0 |
查詢 NULL 字元。 |
查詢換行符。 |
|
\f |
查詢換頁符。 |
\r |
查找回車符。 |
\t |
查詢製表符。 |
\v |
查詢垂直製表符。 |
查詢以八進位制數 xxx 規定的字元。 |
|
查詢以十六進位制數 dd 規定的字元。 |
|
查詢以十六進位制數 xxxx 規定的 Unicode 字元。 |
量詞
量詞 |
描述 |
匹配任何包含至少一個 n 的字串。 例如,/a+/ 匹配 "candy" 中的 "a","caaaaaaandy" 中所有的 "a"。 |
|
匹配任何包含零個或多個 n 的字串。 例如,/bo*/ 匹配 "A ghost booooed" 中的 "boooo","A bird warbled" 中的 "b",但是不匹配 "A goat grunted"。 |
|
匹配任何包含零個或一個 n 的字串。 例如,/e?le?/ 匹配 "angel" 中的 "el","angle" 中的 "le"。 |
|
匹配包含 X 個 n 的序列的字串。 例如,/a{2}/ 不匹配 "candy," 中的 "a",但是匹配 "caandy," 中的兩個 "a",且匹配 "caaandy." 中的前兩個 "a"。 |
|
X 是一個正整數。前面的模式 n 連續出現至少 X 次時匹配。 例如,/a{2,}/ 不匹配 "candy" 中的 "a",但是匹配 "caandy" 和 "caaaaaaandy." 中所有的 "a"。 |
|
X 和 Y 為正整數。前面的模式 n 連續出現至少 X 次,至多 Y 次時匹配。 例如,/a{1,3}/ 不匹配 "cndy",匹配 "candy," 中的 "a","caandy," 中的兩個 "a",匹配 "caaaaaaandy" 中的前面三個 "a"。注意,當匹配 "caaaaaaandy" 時,即使原始字串擁有更多的 "a",匹配項也是 "aaa"。 |
|
匹配任何結尾為 n 的字串。 |
|
匹配任何開頭為 n 的字串。 |
|
匹配任何其後緊接指定字串 n 的字串。 |
|
匹配任何其後沒有緊接指定字串 n 的字串。 |
示例1
判斷字串是否全為數字
val = "123456"
var isnum = /^\d+$/.test(val);
document.write(isnum);
document.write("<br>");
val2 = "as123"
var isnum2 = /^\d+$/.test(val2);
document.write(isnum2);
示例2
判斷字串是否全為字母
val = "123456"
var isletter = /^[a-zA-Z]+$/.test(val);
document.write(isletter);
document.write("<br>");
val2 = "asaaa"
var isletter2 = /^[a-zA-Z]+$/.test(val2);
document.write(isletter2);
示例3
判斷數字在1位-10位以內
val = "8"
var isletter = /^\d{1,10}$/.test(val);
document.write(isletter);
document.write("<br>");
val2 = "12345678910"
var isletter2 = /^\d{1,10}$/.test(val2);
document.write(isletter2);
驗證數字的正則表示式集
驗證數字:^ [0-9] * $
驗證ñ位的數字:^ \ d {N} $
驗證至少Ñ位數字:^ \ d {N,} $
驗證M-N位的數字:^ \ d {M,N} $
驗證零和非零開頭的數字:^(0 | [1-9] [0-9] *)$
驗證有兩位小數的正實數:([0-9] {2})?^ [0-9] + $
驗證有1-3位小數的正實數:([0-9] {1,3})?^ [0-9] + $
驗證非零的正整數:^ \ + [1-9] [0-9] * $
驗證非零的負整數:^ \ - [1-9] [0-9] * $
驗證非負整數(正整數+ 0)^ \ d + $
驗證非正整數(負整數+ 0)^(( - \ d +)|(0 +))$
驗證長度為3的字元:^ {3} $
驗證由26個英文字母組成的字串:^ [A-ZA-Z] + $
驗證由26個大寫英文字母組成的字串:^ [A-Z] + $
驗證由26個小寫英文字母組成的字串:^ [A-Z] + $
驗證由數字和26個英文字母組成的字串:^ [A-ZA-Z0-9] + $
驗證由數字,26個英文字母或者下劃線組成的字串:^ \ w + $
驗證使用者密碼:^ [a-zA-Z] \ w {5,17} $正確格式為:以字母開頭,長度在6-18之間,只能包含字元,數字和下劃線。
驗證是否含有^%&',; =?$ \“等字元:[^%&',; =?$ \ x22] +
驗證漢字:^ [\ u4e00- \ u9fa5],{0,} $
驗證電子郵件地址:/ ^(?[A-ZA-Z0-9] + [_ | \ _ | \])* [A-ZA-Z0-9] + @([A-ZA-Z0-9] +?[_ | \ _ | \])* [A-ZA-Z0-9] + \ [A-ZA-Z] {2,3} $ /
驗證InternetURL:^ http://([\ w-] + \。)+ [\ w-] +(/ [\ w -./?%&=] *)?$; ^ [a-zA-z ] +://(W +(-w +)*)(。(W +(-w +)*))*(?S *)$
驗證電話號碼:^(\(\ d {3,4} \)| \ d {3,4} - )\ d {7,8} $: - 正確格式為:XXXX-XXXXXXX,XXXX-XXXXXXXX ,XXX-XXXXXXX,XXX-XXXXXXXX,XXXXXXX,XXXXXXXX。
驗證身份證號(15位或18位數字):^ \ d {15} | \ d {} 18 $
驗證一年的12個月:^(0?[1-9] | 1 [0-2])$正確格式為:“01” - “09”和“1”“12”
驗證一個月的31天:^((0?[1-9])|((1 | 2)[0-9])| 30 | 31)$正確格式為:01,09和1,31。
整數:?^ - \ d + $
非負浮點數(正浮點數+ 0):^ \ d +(\。\ d +)?$
正浮點數^(([0-9] + \。[0-9] * [1-9] [0-9] *)|([0-9] * [1-9] [0-9] * \ [0-9] +)|([0-9] * [1-9] [0-9] *))$
非正浮點數(負浮點數+ 0)^(( - \ d +(\。\ d +)?)|(0 +(\。0 +)?))$
負浮點數^( - (([0-9] + \。[0-9] * [1-9] [0-9] *)|([0-9] * [1-9] [0- 9] * \ [0-9] +)|。([0-9] * [1-9] [0-9] *)))$
浮點數^( - ?\ d +)(\。\ d +)?$