1. 程式人生 > >JavaScript正則表示式

JavaScript正則表示式

什麼是正則表示式?

  • 正則表示式是由一個字元序列形成的搜尋模式。
  • 當你在文字中搜索資料時,你可以用搜索模式來描述你要查詢的內容。
  • 正則表示式可以是一個簡單的字元,或一個更復雜的模式。
  • 正則表示式可用於所有文字搜尋和文字替換的操作。

正則表示式模式

方括號

方括號用於查詢某個範圍內的字元:

表示式

描述

[abc]

查詢方括號之間的任何字元。

查詢任何不在方括號之間的字元。

[0-9]

查詢任何從 0 9 的數字。

[a-z]

查詢任何從小寫 a 到小寫 z 的字元。

[A-Z]

查詢任何從大寫 A 到大寫 Z 的字元。

[A-z]

查詢任何從大寫 A 到小寫 z 的字元。

[adgk]

查詢給定集合內的任何字元。

[^adgk]

查詢給定集合外的任何字元。

(red|blue|green)

查詢任何指定的選項。

元字元

元字元(Metacharacter)是擁有特殊含義的字元:

元字元

描述

.

查詢單個字元,除了換行和行結束符。

\w

查詢單詞字元。

\W

查詢非單詞字元。

\d

查詢數字。

\D

查詢非數字字元。

\s

查詢空白字元。

\S

查詢非空白字元。

\b

匹配單詞邊界。

\B

匹配非單詞邊界。

\0

查詢 NULL 字元。

\n

查詢換行符。

\f

查詢換頁符。

\r

查找回車符。

\t

查詢製表符。

\v

查詢垂直製表符。

\xxx

查詢以八進位制數 xxx 規定的字元。

\xdd

查詢以十六進位制數 dd 規定的字元。

查詢以十六進位制數 xxxx 規定的 Unicode 字元。

量詞

量詞

描述

n+

匹配任何包含至少一個 n 的字串。

例如,/a+/ 匹配 "candy" 中的 "a""caaaaaaandy" 中所有的 "a"

n*

匹配任何包含零個或多個 n 的字串。

例如,/bo*/ 匹配 "A ghost booooed" 中的 "boooo""A bird warbled" 中的 "b",但是不匹配 "A goat grunted"

n?

匹配任何包含零個或一個 n 的字串。

例如,/e?le?/ 匹配 "angel" 中的 "el""angle" 中的 "le"

n{X}

匹配包含 X n 的序列的字串。

例如,/a{2}/ 不匹配 "candy," 中的 "a",但是匹配 "caandy," 中的兩個 "a",且匹配 "caaandy." 中的前兩個 "a"

n{X,}

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 的字串。

?=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 +)?$