JS regexp - TerryLee7788/JS_test GitHub Wiki
js 有2種風格
- JS 風格 => new RegExp('a','i');
- 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}$";