校驗郵箱正則表達式
// 校驗郵箱規則 var checkEmail = (rules, value, callback) => { const regEmail = /^([a-zA-Z0-9_-])+@+([a-zA-Z0-9_-])+(\.[a-zA-Z0-9_-])+/ if (regEmail.text(value)) { return callback() } callback(new error('請輸入合法的郵箱')) }
校驗手機號正則表達式
// 校驗手機規則 var checkMobile = (rules, value, cb) => { const regMobile = /^(0|86|17951)?(13[0-9]|15[012356789]|17[678]|18[0-9]|14[57]|19[0267])[0-9]{8}$/ if (regMobile.text(value)) { return cb() } cb(new error('請輸入合法的手機號')) }
校驗固定電話號正則表達式
// 校驗固定電話號 var checkTel= (rules, value, cb) => { const regtel = /^(\(\d{3,4}\)|\d{3,4}-|\s)?\d{7,14}$/.test(tel) if (regtel.text(value)) { return cb() } cb(new error('請輸入合法的電話號')) }
校驗身份證正則表達式
// 校驗身份證規則 var checkIDcard = (rules, value, cb) => { const regIDcard = (^\d{15}$)|(^\d{17}([0-9]|X)$) if (regIDcard.text(value)) { return cb() } cb(new error('請輸入合法的身份證號')) }
其他常用
提取信息中的網絡鏈接: (h|H)(r|R)(e|E)(f|F) *= *('|")?(\w|\\|\/|\.)+('|"| *|>)? 提取信息中的郵件地址: \w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)* 提取信息中的圖片鏈接: (s|S)(r|R)(c|C) *= *('|")?(\w|\\|\/|\.)+('|"| *|>)? 提取信息中的IP地址: (\d+)\.(\d+)\.(\d+)\.(\d+) 提取信息中的中國電話號碼(包括移動和固定電話): (\(\d{3,4}\)|\d{3,4}-|\s)?\d{7,14} 提取信息中的中國郵政編碼: [1-9]{1}(\d+){5} 提取信息中的中國身份證號碼: \d{18}|\d{15} 提取信息中的整數: \d+ 提取信息中的浮點數(即小數): (-?\d*)\.?\d+ 提取信息中的任何數字: (-?\d*)(\.\d+)? 提取信息中的中文字符串: [\u4e00-\u9fa5]* 提取信息中的雙字節字符串 (漢字): [^\x00-\xff]*
方法 | 描述 |
---|---|
exec |
一個在字符串中執行查找匹配的RegExp方法,它返回一個數組(未匹配到則返回 null)。 |
test |
一個在字符串中測試是否匹配的RegExp方法,它返回 true 或 false。 |
match |
一個在字符串中執行查找匹配的String方法,它返回一個數組,在未匹配到時會返回 null。 |
matchAll |
一個在字符串中執行查找所有匹配的String方法,它返回一個迭代器(iterator)。 |
search |
一個在字符串中測試匹配的String方法,它返回匹配到的位置索引,或者在失敗時返回-1。 |
replace |
一個在字符串中執行查找匹配的String方法,並且使用替換字符串替換掉匹配到的子字符串。 |
split |
一個使用正則表達式或者一個固定字符串分隔一個字符串,並將分隔后的子字符串存儲到數組中的 String 方法。 |
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
特殊字符
標志 | 描述 |
---|---|
g |
全局搜索。 |
i |
不區分大小寫搜索。 |
m |
多行搜索。 |
s |
允許 . 匹配換行符。 |
u |
使用unicode碼的模式進行匹配。 |
y |
執行“粘性”搜索,匹配從目標字符串的當前位置開始,可以使用y標志。 |
字符 | 含意 |
\ | 做為轉意,即通常在"\"后面的字符不按原來意義解釋,如/b/匹配字符"b",當b前面加了反斜桿后/\b/,轉意為匹配一個單詞的邊界。 |
^ | 匹配一個輸入或一行的開頭,/^a/匹配"an A",而不匹配"An a" |
$ | 匹配一個輸入或一行的結尾,/a$/匹配"An a",而不匹配"an A" |
* | 匹配前面元字符0次或多次,/ba*/將匹配b,ba,baa,baaa |
+ | 匹配前面元字符1次或多次,/ba*/將匹配ba,baa,baaa |
? | 匹配前面元字符0次或1次,/ba*/將匹配b,ba |
(x) | 匹配x保存x在名為$1...$9的變量中 |
x|y | 匹配x或y |
{n} | 精確匹配n次 |
{n,} | 匹配n次以上 |
{n,m} | 匹配n-m次 |
[xyz] | 字符集(character set),匹配這個集合中的任一一個字符(或元字符) |
[^xyz] | 不匹配這個集合中的任何一個字符 |
[\b] | 匹配一個退格符 |
\b | 匹配一個單詞的邊界 |
\B | 匹配一個單詞的非邊界 |
\cX | 這兒,X是一個控制符,/\cM/匹配Ctrl-M |
\d | 匹配一個字數字符,/\d/ = /[0-9]/ |
\D | 匹配一個非字數字符,/\D/ = /[^0-9]/ |
\n | 匹配一個換行符 |
\r | 匹配一個回車符 |
\s | 匹配一個空白字符,包括\n,\r,\f,\t,\v等 |
\S | 匹配一個非空白字符,等於/[^\n\f\r\t\v]/ |
\t | 匹配一個制表符 |
\v | 匹配一個重直制表符 |
\w | 匹配一個可以組成單詞的字符(alphanumeric,這是我的意譯,含數字),包括下划線,如[\w]匹配"$5.98"中的5,等於[a-zA-Z0-9] |
\W | 匹配一個不可以組成單詞的字符,如[\W]匹配"$5.98"中的$,等於[^a-zA-Z0-9]。 |
使用方式
用re = new RegExp("pattern",["flags"]) 的方式比較好 |
vaScript動態正則表達式問題 請問正則表達式可以動態生成嗎? |