正規式的表達方式
  1. 字串式:/正規式/旗標 (省略旗標內定 g)
  2. var re = /a+b|^c/;
  3. 物件式:RegExp("正規式",旗標) (省略旗標內定 g)
  4. var re = new RegExp("a+b|^c"); //不需要加上 /     /
正規式:
結果:

正規式字元集範例說明
字元解說範例
/abc/字元串符合 abc 三字順序就算。tabcm //yes
tab cm //no
tAbcm //no
/./一個任意字元。tabcm //yes
tab cm //no
tAbcm //no
/ab+c/至少現一次。tacm //no
tabcm //yes
tabbbcm //yes
/ab?c/可以不出現,也可以出現一次。tacm //yes
tabcm //yes
tabbc //no
/ab*c/可以不出現,也可以出現一次以上。tacm //yes
tabcm //yes
tabbbcm //yes
[abc]字元集合。相當於/a|b|c/xa //yes
bct //yes
xyz //no
[5-9] [-] 範圍運算。出現 5 ~ 9 的所有字元。ab1c //no
ab7y39 //yes
/bc|3/或運算。出現 bc 或 3 字元。abc1d //yes
a73 //yes
ac92 //no
/\bab\b/\b 邊界運算。atab abm //no
ax ab xb //yes
/^ab/開頭字串。xabc //no
yzab //no
absxu //yes
/x[^0-9]t/範圍否定。在 x 與 t 之間不存在數字的字串。xtm4ct //no
xt//no 中間允許空字串,
則正規式應寫/x[^0-9]*t/
yxut //yes
/ab$/結尾字串。xabc //no
yzab //yes
absxu //no
/a{3}/大括號設定出現次數。xaabc //no
xaaaayu //yes
xaa aam //no
/a{3,5}/設定 a 出現 3 至 5 次。(後面數字不能小於前面次數)xaabc //no
xaaayu //yes
aaaaaau //no
/a{3,}/設定 a 出現至少 3 次以上。(後面數字不能小於前面次數)xaabc //no
xaaayu //yes
aaaaaau //yes
/\d/存在阿拉伯數字。相當於 [0-9]abc //no
ab9c //yes
318//yes
/\D/非純阿拉伯數字。相當於 [^0-9]abc //yes
ab9c //yes
318 //no
/\s/存在空白字元。ac a//yes
abc //no
/\S/不存在全部空白字元。aba //yes
ab c
   //no
/\w/存在大小寫字母或數字或底線。#a@ ~/ //yes
Xu_3 //yes
@-~# //no
/\W/不存大小寫字母或數字或底線。#a@ ~/ //yes
Xu_3 //no
@-~# //yes
(\d)\1\1群組紀錄。並搭配後面數字。t333y123x66 //yes
1x7723y //no
(\d)\1([a-z])\1\2\1ux66y6y61z //yes
11x1x322m2m2 //yes
ts(?=y)連接詞。txs3yaxsmy //no
xsytxsyutx //yes
xyz(?!a)連接詞。xyz後面不接 a 的字串。 xyzasxyza //no
xyzaxyz //yes
\nnn表示一個 nnn 的 ASCII 碼。 xyzasxyza //no
xyzaxyz //yes
\Xhh表示一個 hh 16 進制。 xyzasxyza //no
xyzaxyz //yes
\特殊字元特殊字元為 { } [ ] ( ) * + - | / \ , 表示一個 hh 16 進制。 xyzasxyza //no
xyzaxyz //yes
正規化處理旗標說明
旗標說明
g全部一般性處理。(內定處理方式)
i不分大小寫處理。
m多行處理。
u全部視為 unicode 處理。
y

常用正規式相關函式
函式解說
match(正規式)找出符合正規式第一出現的位置(0 為第一個字)。若找不到,傳回-1。
search(正規式)替換符合正規式的字元串。若找不到,傳回 null。
replace(被替換的正規式,替換的字元)replace 需要先建立正規化物件。
var a="abcdeftcc";
var re=new RegExp("c|f","g"); //建立物件
a.replace(re,"XX");

常用範例
功能程式解說
只能輸入整數^(0|[1-9][0-9]*)$ ^:第一個字
[1-9][0-9]:先 1 到 9 隨便一個數字,
後面接 0 到 9 ,0 次以上。(非0開頭的整數)
(0|[1-9][0-9]*) 0 或 非 0 開頭的整數
^(....)$ 括弧內的格式必須開頭,也是結尾。
只能輸入符點數
(可以帶正負,且允許開頭為0)
^[-+]?\d+(\.\d+)?$ 
檢查是否為手機號碼格式。 /^09\d{8}$/ ^09:開頭一定是 09
\d{8}$:阿拉伯數字隨意 8 個,而且這 8 個是最後結尾。
檢查是否為身分證號碼格式。 /^[A-Z]{1}[1-2]{1}[0-9]{8}$/ ^[A-Z]:開頭一定是大寫英文字母1個
[1-2]{1}:數字 1 或 2 1個
[0-9]{8}$:連續 0 至 9 隨便 8 個,而且這 8 個是最後結尾。
只能大寫英文字、小寫英文字母、阿拉伯數字,
三種文字類型至少選二種的文字串。
^([A-Z]|[a-z]){1}
只能 2-6 個字,且只能有大小寫英文字母。
輸入至少 8 個字以上 大寫英文字、
小寫英文字母、阿拉伯數字、
特殊字元(_、-、@、#、~),
四種文字類型至少選三種的文字串。
^((?=.{8,}$)(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).*|(?=.{8,}$)(?=.*\d)(?=.*[a-zA-Z])(?=.*[!\u0022#$%&'()*+,./:;<=>?@[\]\^_`{|}~-]).*)
6 位數以上,並且至少包含大寫字母、小寫字母、數字、符號各一 /^(?=.*[^a-zA-Z0-9])(?=.*[A-Z])(?=.*[a-z])(?=.*\d).{6,}$/
檢查是否為網址 http:// 開頭的格式。^http:////([/w-]+(/.[/w-]+)+(//[/w- .///?
檢驗日期格式是否正確/\d{4}\/\d{2}\/\d{2}/
幫數字加上三位一撇var rg =RegExp("\B(?=(?:\d{3})+)","g");
String(a).replace(rg,",");
檢查是否為中文^[/u4e00-/u9fa5]{0,}$