本文已參與好文召集令活動,點擊查看:後端、大前端雙賽道投稿,2萬元獎池等你挑戰!html
參考地址:www.runoob.com/regexp/rege…前端
爲啥寫的緣由是,作前端好久了,可是正則的書寫仍是百度,因此就在這裏把用獲得的所有寫上,下次有須要,直接看本身寫的。正則表達式
校驗規則使用了^ [] \d {} $,分別表明着mongodb
假設你沒有寫最後$,即便超出位數,依然爲trueexpress
let phone = /^1[3-9]\d{3,9}$/
console.log(phone.test(手機號))
// true
複製代碼
let email = /^[a-zA-Z0-9]+\w+@([a-zA-Z0-9]+\.+[a-zA-Z0-9])/
console.log(email.test(郵箱號))
複製代碼
正則表達式(Regular Expression)是一種文本模式,包括普通字符(例如,a 到 z 之間的字母)和特殊字符(稱爲"元字符")。後端
正則表達式使用單個字符串來描述、匹配一系列匹配某個句法規則的字符串。markdown
正則表達式(regular expression)描述了一種字符串匹配的模式(pattern),能夠用來檢查一個串是否含有某種子串、將匹配的子串替換或者從某個串中取出符合某個條件的子串等。oop
let string = 'abc1efg'
console.log(string.replace(/[0-9]/g, 'M'))
// abcMefg
複製代碼
let string = 'abc1efg'
console.log(string.replace(/[^0-9]/g, 'M'))
// MMM1MMM
複製代碼
表示一個區間,匹配全部大寫字母,[a-z] 表示全部小寫字母。佈局
let string = 'ABCedf1'
console.log(string.replace(/[A-Z]|[a-z]/g, '0'))
// 0000001
複製代碼
\s 是匹配全部空白符,包括換行,\S 非空白符,不包括換行。post
let string = `a b c d e f 1 *`
console.log(string.replace(/[\s\S]/g, '0'))
// 000000000000000
複製代碼
等價於 [A-Za-z0-9_]
let string = `a b c d _ e f 1 *`
console.log(string.replace(/[\s\S]/g, '1'))
// 11111111111111111
複製代碼
非打印字符也能夠是正則表達式的組成部分。
匹配由x指明的控制字符。例如, \cM 匹配一個 Control-M 或回車符。x 的值必須爲 A-Z 或 a-z 之一。不然,將 c 視爲一個原義的 'c' 字符。
匹配一個換頁符。等價於 \x0c 和 \cL。
匹配一個換行符。等價於 \x0a 和 \cJ。
匹配一個回車符。等價於 \x0d 和 \cM。
匹配一個製表符。等價於 \x09 和 \cI。
匹配一個垂直製表符。等價於 \x0b 和 \cK。
let string = 'a b c a'
console.log(string.replace(/a$/g, '2'))
// a b c 2
複製代碼
標記一個子表達式的開始和結束位置。子表達式能夠獲取供之後使用。要匹配這些字符,請使用 ( 和 )。
let string = 'abc'
console.log(string.replace(/ab*/gim, '3'))
// 3c
複製代碼
匹配前面的子表達式一次或屢次。例如,'zo+' 能匹配 "zo" 以及 "zoo",但不能匹配 "z"。+ 等價於 {1,}。
匹配除換行符 \n 以外的任何單字符。要匹配 . ,請使用 \ . 。
要匹配 [,請使用 \ [。
例如,"do(es)?" 能夠匹配 "do" 、 "does" 中的 "does" 、 "doxy" 中的 "do" 。? 等價於 {0,1}
例如, 'n' 匹配字符 'n'。'\ n' 匹配換行符。序列 '\ \ ' 匹配 "\ ",而 '\ (' 則匹配 "("。
匹配輸入字符串的開始位置, 除非在方括號表達式中使用,當該符號在方括號表達式中使用時,表示不接受該方括號表達式中的字符集合
要匹配 {,請使用 {。
要匹配 |,請使用 |。
n 是一個非負整數。匹配肯定的 n 次。例如,'o{2}' 不能匹配 "Bob" 中的 'o',可是能匹配 "food" 中的兩個 o。
至少匹配n 次。例如,'o{2,}' 不能匹配 "Bob" 中的 'o',但能匹配 "foooood" 中的全部 o。'o{1,}' 等價於 'o+'。'o{0,}' 則等價於 'o*'。
。最少匹配 n 次且最多匹配 m 次。例如,"o{1,3}" 將匹配 "fooooood" 中的前三個 o。'o{0,1}' 等價於 'o?'。請注意在逗號和兩個數之間不能有空格。
let string = 'abcab ab'
console.log(string.replace(/\bab/g, '34'))
// 34cab 34
複製代碼
let string = 'abcab ab'
console.log(string.replace(/\Bab/g, '34'))
// abc34 ab
複製代碼
將匹配設置爲不區分大小寫,搜索時不區分大小寫: A 和 a 沒有區別。
查找全部的匹配項。
使邊界字符 ^ 和 $ 匹配每一行的開頭和結尾,記住是多行,而不是整個字符串的開頭和結尾。
默認狀況下的圓點 . 是 匹配除換行符 \n 以外的任何字符,加上 s 修飾符以後, . 中包含換行符 \n。
元字符的元素與語法中的多數類似,所以只寫那些不一樣的。
例如,'n' 匹配字符 "n"。'\n' 匹配一個換行符。序列 '\\' 匹配 "\" 而 "\(" 則匹配 "("。 複製代碼
等價於 [0-9]
等價於 [^0-9]。
十六進制轉義值必須爲肯定的兩個數字長。例如,'\x41' 匹配 "A"。'\x041' 則等價於 '\x04' & "1"。正則表達式中可使用 ASCII 編碼。
對所獲取的匹配的引用。例如,'(.)\1' 匹配兩個連續的相同字符。
若是 \nm 以前至少有 nm 個得到子表達式,則 nm 爲向後引用。若是 \nm 以前至少有 n 個獲取,則 n 爲一個後跟文字 m 的向後引用。若是前面的條件都不知足,若 n 和 m 均爲八進制數字 (0-7),則 \nm 將匹配八進制轉義值 nm。
例如, \u00A9 匹配版權符號 (?)
字符具備高於替換運算符的優先級,使得"m|food"匹配"m"或"food"。若要匹配"mood"或"food",請使用括號建立子表達式,從而產生"(m|f)ood"。
let string = 'abc'
console.log(string.replace(/a(?=b)/g, '5'))
// 5bc
複製代碼
let string = 'abac'
console.log(string.replace(/(?<=b)a/g, '5'))
// ab5c
複製代碼
let string = 'abac'
console.log(string.replace(/a(?!b)/g, '5'))
// ab5c
複製代碼
let string = 'abac'
console.log(string.replace(/(?<!b)a/g, '5'))
// 5bac
複製代碼
正則表達通常是平時不咋注意,用的時候特別頭疼,這是個人感受。 因此照着文檔,寫了一遍,有的本身也實驗了一遍,有不對的地方,還請多多指導,歡迎點贊,留言!!!