JS regexp - TerryLee7788/JS_test GitHub Wiki

js 有2種風格

  1. JS 風格 => new RegExp('a','i');
  2. perl 風格 => /a/i

js test function:

test   => 字串一部分符合要求, 就返回true
example: 校驗電子信箱的正規表達式: 
var reg = /\w+@[a-z0-9]+\.[a-z]+/i;
var str = '--挖靠[email protected]';
reg.test(str);    //會回傳true

因為test function 只要後面有一部分滿足條件規則, 就會回傳true (這並不是我們想要的答案) 所以改寫正規規則:

var reg = /^\w+@[a-z0-9]+\.[a-z]+$/i;
^    => 寫在括號裡面([^a])代表排除, 意思就是排除a的英文字串
那如果寫在外面就會是"開頭" 的意思, 搭配使用$ 代表結尾

常用量詞:

i      => 忽略大小寫
g      => global, 全局匹配
{n}    => 至少n次
example: [1-9]\d{7} 
=> 意思就是 開頭一定要1-9之間的數字([1-9]), 再來是任意數字(\d), 最後出現7次({7})
{n,}   => 至少出現n次, 最多不限
example: {1,}
{n,m}  => 至少n次, 最多m次
example: [1-9]\d{4,10}
*      => {0,}  可以沒有, 最多不限 ( 不太推薦使用星號 )
?      => {0,1} 最少0次, 最多1次
example: 固定電話 02-21345789-886
(0\d{2,3}-)?[1-9]\d{7}(-\d{2,5})?
+      => {1,}  一次或者任意次

幾個簡單的用法:

\d    數字             [0-9]
\w    英文, 數字, 底線  [a-z0-9_]
\s    空白字符
\D    除了數字            [^0-9]
\W    除了英文, 數字, 底線 [^a-z0-9_]
\S    除了了空白字符

匹配中文:

[\u4e00-\u9fa5] 

英文字母:

[a-zA-Z] 

數字:

[0-9] 

匹配中文,英文字母和數字及_:

^[\u4e00-\u9fa5_a-zA-Z0-9]+$
  • 同時判斷輸入長度:
[\u4e00-\u9fa5_a-zA-Z0-9_]{4,10}

只含有漢字、數字、字母、下劃線,下劃線位置不限:

^[a-zA-Z0-9_\u4e00-\u9fa5]+$

由數字、26個英文字母或者下劃線组成的字符

^\w+$

2~4個漢字

@"^[\u4E00-\u9FA5]{2,4}$"; 

太多東西了= = 附上連結