摘要:將模式視為序列點(diǎn)的序列粘性匹配僅匹配目標(biāo)字符串中此正則表達(dá)式的屬性指示的索引并且不嘗試從任何后續(xù)的索引匹配。
http://regex.zjmainstay.cn/
https://regexper.com/
https://regexr.com/
https://regex101.com/
https://regexr.com/
RegEx用來處理字符串
構(gòu)建正則表達(dá)式的方法let reg=/ab+c/i; let reg=new RegExp("ab+c", "i"); let reg=new RegExp(/ab+c/, "i");
iinsensitive不區(qū)分大小寫 gglobal全部匹配
/news/ig
/news/ig.exec("Newssssssss") // "News"
/news/ig.test("Newssssssss") // true /newsa/ig.test("Newssssssss") // false
*量詞 匹配0-無窮次
s* 零個(gè)s以上 |或
"Newssssssss".match(/new|s/ig) // ["New", "s", "s", "s", "s", "s", "s", "s", "s"] "Newssssssss".match(/new|s*/ig) // ["New", "ssssssss", ""]
.任意單個(gè)字符
.*匹配所有字符
w匹配英文字母、數(shù)字或下劃線,等價(jià)于[a-z A-Z 0-9 _]
"MiYogurt".replace("Mi", "Yo") // "YoYogurt" "MiYogurt".replace(/M.*t/ig, "Yo") // Yo "MiYogurt".replace(/Mw*t/ig, "Yo") // Yo
轉(zhuǎn)義字符 / .
let regex = /a(1|2|3)b/g; let regex = /a[123]b/g; let regex = /a[1-3]b/g; let string = "a0b a1b a2b a3b a4b"; // ["a1b", "a2b", "a3b"]
[^abc]除abc之外,/^a/以 a 開頭的,/b$/以 b 結(jié)尾
., [^] 任意字符
d /[0-9]/
D /[^0-9]/ 大寫表示相反
w [A-Za-z0-9_]
W [^A-Za-z0-9_]
s 空白符
S 非空白符
()分組group 1 引用分組1
/apple(,)sorange1/ apple, orange, cherry, peach. // apple,orange,
(?:) 取消分組
/apple(?:,)sorange1/
(?=) (?!)
/x(?=y)/ x后面跟著y匹配 /x(?!y)/ x后面不跟著y匹配量詞
? 0 - 1
* 0 - N
+ 1 - N
{x,y} 從 x 到 y 次
{2} 2次
{0,2} 0 - 2 次
{1,} 1-N 次
x*?加了問號(hào)表示盡可能少匹配
x+?
m 多行; 將開始和結(jié)束字符(^和$)視為在多行上工作(例如,分別匹配每一行的開始和結(jié)束(由 n 或 r 分割),而不只是只匹配整個(gè)輸入字符串的最開始和最末尾處。
u Unicode; 將模式視為Unicode序列點(diǎn)的序列
y粘性匹配; 僅匹配目標(biāo)字符串中此正則表達(dá)式的lastIndex屬性指示的索引(并且不嘗試從任何后續(xù)的索引匹配)。
一、校驗(yàn)數(shù)字的表達(dá)式 1 數(shù)字:^[0-9]*$ 2 n位的數(shù)字:^d{n}$ 3 至少n位的數(shù)字:^d{n,}$ 4 m-n位的數(shù)字:^d{m,n}$ 5 零和非零開頭的數(shù)字:^(0|[1-9][0-9]*)$ 6 非零開頭的最多帶兩位小數(shù)的數(shù)字:^([1-9][0-9]*)+(.[0-9]{1,2})?$ 7 帶1-2位小數(shù)的正數(shù)或負(fù)數(shù):^(-)?d+(.d{1,2})?$ 8 正數(shù)、負(fù)數(shù)、和小數(shù):^(-|+)?d+(.d+)?$ 9 有兩位小數(shù)的正實(shí)數(shù):^[0-9]+(.[0-9]{2})?$ 10 有1~3位小數(shù)的正實(shí)數(shù):^[0-9]+(.[0-9]{1,3})?$ 11 非零的正整數(shù):^[1-9]d*$ 或 ^([1-9][0-9]*){1,3}$ 或 ^+?[1-9][0-9]*$ 12 非零的負(fù)整數(shù):^-[1-9][]0-9"*$ 或 ^-[1-9]d*$ 13 非負(fù)整數(shù):^d+$ 或 ^[1-9]d*|0$ 14 非正整數(shù):^-[1-9]d*|0$ 或 ^((-d+)|(0+))$ 15 非負(fù)浮點(diǎn)數(shù):^d+(.d+)?$ 或 ^[1-9]d*.d*|0.d*[1-9]d*|0?.0+|0$ 16 非正浮點(diǎn)數(shù):^((-d+(.d+)?)|(0+(.0+)?))$ 或 ^(-([1-9]d*.d*|0.d*[1-9]d*))|0?.0+|0$ 17 正浮點(diǎn)數(shù):^[1-9]d*.d*|0.d*[1-9]d*$ 或 ^(([0-9]+.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*.[0-9]+)|([0-9]*[1-9][0-9]*))$ 18 負(fù)浮點(diǎn)數(shù):^-([1-9]d*.d*|0.d*[1-9]d*)$ 或 ^(-(([0-9]+.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*.[0-9]+)|([0-9]*[1-9][0-9]*)))$ 19 浮點(diǎn)數(shù):^(-?d+)(.d+)?$ 或 ^-?([1-9]d*.d*|0.d*[1-9]d*|0?.0+|0)$ 二、校驗(yàn)字符的表達(dá)式 1 漢字:^[u4e00-u9fa5]{0,}$ 2 英文和數(shù)字:^[A-Za-z0-9]+$ 或 ^[A-Za-z0-9]{4,40}$ 3 長(zhǎng)度為3-20的所有字符:^.{3,20}$ 4 由26個(gè)英文字母組成的字符串:^[A-Za-z]+$ 5 由26個(gè)大寫英文字母組成的字符串:^[A-Z]+$ 6 由26個(gè)小寫英文字母組成的字符串:^[a-z]+$ 7 由數(shù)字和26個(gè)英文字母組成的字符串:^[A-Za-z0-9]+$ 8 由數(shù)字、26個(gè)英文字母或者下劃線組成的字符串:^w+$ 或 ^w{3,20}$ 9 中文、英文、數(shù)字包括下劃線:^[u4E00-u9FA5A-Za-z0-9_]+$ 10 中文、英文、數(shù)字但不包括下劃線等符號(hào):^[u4E00-u9FA5A-Za-z0-9]+$ 或 ^[u4E00-u9FA5A-Za-z0-9]{2,20}$ 11 可以輸入含有^%&",;=?$"等字符:[^%&",;=?$x22]+ 12 禁止輸入含有~的字符:[^~x22]+ 三、特殊需求表達(dá)式 1 Email地址:^w+([-+.]w+)*@w+([-.]w+)*.w+([-.]w+)*$ 2 域名:[a-zA-Z0-9][-a-zA-Z0-9]{0,62}(/.[a-zA-Z0-9][-a-zA-Z0-9]{0,62})+/.? 3 InternetURL:[a-zA-z]+://[^s]* 或 ^http://([w-]+.)+[w-]+(/[w-./?%&=]*)?$ 4 手機(jī)號(hào)碼:^(13[0-9]|14[5|7]|15[0|1|2|3|5|6|7|8|9]|18[0|1|2|3|5|6|7|8|9])d{8}$ 5 電話號(hào)碼("XXX-XXXXXXX"、"XXXX-XXXXXXXX"、"XXX-XXXXXXX"、"XXX-XXXXXXXX"、"XXXXXXX"和"XXXXXXXX):^((d{3,4}-)|d{3.4}-)?d{7,8}$ 6 國內(nèi)電話號(hào)碼(0511-4405222、021-87888822):d{3}-d{8}|d{4}-d{7} 7 身份證號(hào): 15或18位身份證:^d{15}|d{18}$ 15位身份證:^[1-9]d{7}((0d)|(1[0-2]))(([0|1|2]d)|3[0-1])d{3}$ 18位身份證:^[1-9]d{5}[1-9]d{3}((0d)|(1[0-2]))(([0|1|2]d)|3[0-1])d{4}$ 8 短身份證號(hào)碼(數(shù)字、字母x結(jié)尾):^([0-9]){7,18}(x|X)?$ 或 ^d{8,18}|[0-9x]{8,18}|[0-9X]{8,18}?$ 9 帳號(hào)是否合法(字母開頭,允許5-16字節(jié),允許字母數(shù)字下劃線):^[a-zA-Z][a-zA-Z0-9_]{4,15}$ 10 密碼(以字母開頭,長(zhǎng)度在6~18之間,只能包含字母、數(shù)字和下劃線):^[a-zA-Z]w{5,17}$ 11 強(qiáng)密碼(必須包含大小寫字母和數(shù)字的組合,不能使用特殊字符,長(zhǎng)度在8-10之間):^(?=.*d)(?=.*[a-z])(?=.*[A-Z]).{8,10}$ 12 日期格式:^d{4}-d{1,2}-d{1,2} 13 一年的12個(gè)月(01~09和1~12):^(0?[1-9]|1[0-2])$ 14 一個(gè)月的31天(01~09和1~31):^((0?[1-9])|((1|2)[0-9])|30|31)$ 15 錢的輸入格式: 16 1.有四種錢的表示形式我們可以接受:"10000.00" 和 "10,000.00", 和沒有 "分" 的 "10000" 和 "10,000":^[1-9][0-9]*$ 17 2.這表示任意一個(gè)不以0開頭的數(shù)字,但是,這也意味著一個(gè)字符"0"不通過,所以我們采用下面的形式:^(0|[1-9][0-9]*)$ 18 3.一個(gè)0或者一個(gè)不以0開頭的數(shù)字.我們還可以允許開頭有一個(gè)負(fù)號(hào):^(0|-?[1-9][0-9]*)$ 19 4.這表示一個(gè)0或者一個(gè)可能為負(fù)的開頭不為0的數(shù)字.讓用戶以0開頭好了.把負(fù)號(hào)的也去掉,因?yàn)殄X總不能是負(fù)的吧.下面我們要加的是說明可能的小數(shù)部分:^[0-9]+(.[0-9]+)?$ 20 5.必須說明的是,小數(shù)點(diǎn)后面至少應(yīng)該有1位數(shù),所以"10."是不通過的,但是 "10" 和 "10.2" 是通過的:^[0-9]+(.[0-9]{2})?$ 21 6.這樣我們規(guī)定小數(shù)點(diǎn)后面必須有兩位,如果你認(rèn)為太苛刻了,可以這樣:^[0-9]+(.[0-9]{1,2})?$ 22 7.這樣就允許用戶只寫一位小數(shù).下面我們?cè)摽紤]數(shù)字中的逗號(hào)了,我們可以這樣:^[0-9]{1,3}(,[0-9]{3})*(.[0-9]{1,2})?$ 23 8.1到3個(gè)數(shù)字,后面跟著任意個(gè) 逗號(hào)+3個(gè)數(shù)字,逗號(hào)成為可選,而不是必須:^([0-9]+|[0-9]{1,3}(,[0-9]{3})*)(.[0-9]{1,2})?$ 24 備注:這就是最終結(jié)果了,別忘了"+"可以用"*"替代如果你覺得空字符串也可以接受的話(奇怪,為什么?)最后,別忘了在用函數(shù)時(shí)去掉去掉那個(gè)反斜杠,一般的錯(cuò)誤都在這里 25 xml文件:^([a-zA-Z]+-?)+[a-zA-Z0-9]+.[x|X][m|M][l|L]$ 26 中文字符的正則表達(dá)式:[u4e00-u9fa5] 27 雙字節(jié)字符:[^x00-xff] (包括漢字在內(nèi),可以用來計(jì)算字符串的長(zhǎng)度(一個(gè)雙字節(jié)字符長(zhǎng)度計(jì)2,ASCII字符計(jì)1)) 28 空白行的正則表達(dá)式: s* (可以用來刪除空白行) 29 HTML標(biāo)記的正則表達(dá)式:<(S*?)[^>]*>.*?|<.*? /> (網(wǎng)上流傳的版本太糟糕,上面這個(gè)也僅僅能部分,對(duì)于復(fù)雜的嵌套標(biāo)記依舊無能為力) 30 首尾空白字符的正則表達(dá)式:^s*|s*$或(^s*)|(s*$) (可以用來刪除行首行尾的空白字符(包括空格、制表符、換頁符等等),非常有用的表達(dá)式) 31 騰訊QQ號(hào):[1-9][0-9]{4,} (騰訊QQ號(hào)從10000開始) 32 中國郵政編碼:[1-9]d{5}(?!d) (中國郵政編碼為6位數(shù)字) 33 IP地址:d+.d+.d+.d+ (提取IP地址時(shí)有用)
參考網(wǎng)站:
https://juejin.im/post/596594...
https://nodelover.me/
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/89074.html
摘要:基礎(chǔ)語法鞏固正則表達(dá)式引擎根據(jù)正則去匹配字符的時(shí)候,是通過檢查索引的方式。妻原配就是好,可以直接使用正則表達(dá)式調(diào)用它。下面解釋一下上面這些常用的元字符查找單個(gè)字符,除了換行和行結(jié)束符。正則系列文章整理到了 上一章內(nèi)容:正則表達(dá)式實(shí)戰(zhàn)篇 知識(shí)回顧 前2章分別學(xué)習(xí)了正則表達(dá)式入門技巧,以及遇到正則需求該如何去分析問題,還有正則表達(dá)式實(shí)戰(zhàn)的一些場(chǎng)景解釋。 這一章內(nèi)容偏向理論,推薦你點(diǎn)擊開頭的...
摘要:前置知識(shí)中的正則表達(dá)式是用來匹配字符串中指定字符組合的模式。另外需要記住正則表達(dá)式也是對(duì)象。在正則表達(dá)式創(chuàng)建時(shí)更新,不執(zhí)行。替換與正則表達(dá)式匹配的子串。查找以十六進(jìn)制數(shù)規(guī)定的字符。正則表達(dá)式拓展介紹在中有兩種情況。 本文是 重溫基礎(chǔ) 系列文章的第九篇。 今日感受:時(shí)間管理-角色管理法。 系列目錄: 【復(fù)習(xí)資料】ES6/ES7/ES8/ES9資料整理(個(gè)人整理) 【重溫基礎(chǔ)】1.語...
摘要:正則起源最近看完了精通正則表達(dá)式,收獲頗豐,略過了一些晦澀難懂的理論部分,主要看了實(shí)戰(zhàn)和教程部分。然后下面說一下以上兩個(gè)基礎(chǔ)教程里沒說到的知識(shí)點(diǎn)。最后以上是我在精通正則表達(dá)式一書中得到的一些收獲,希望能分享給大家,如有錯(cuò)誤歡迎指正。 正則起源 最近看完了 《精通正則表達(dá)式》,收獲頗豐,略過了一些晦澀難懂的理論部分,主要看了實(shí)戰(zhàn)和教程部分。 下面引用一下百度百科里的內(nèi)容。 正則表達(dá)式的鼻...
摘要:簡(jiǎn)言在中,經(jīng)常會(huì)用到正則表達(dá)式來進(jìn)行模式匹配。要寫出正確的正則表達(dá)式,先要定義表達(dá)式規(guī)則。重復(fù)在正則表達(dá)式中用來表示元素重復(fù)出現(xiàn)的次數(shù)。給出測(cè)試結(jié)果如下毛三胖子測(cè)試代碼根據(jù)以上內(nèi)容,定義你自己的登錄名正則表達(dá)式吧原文鏈接 簡(jiǎn)言 在JavaScript中,經(jīng)常會(huì)用到正則表達(dá)式來進(jìn)行模式匹配。例如,登錄名驗(yàn)證,密碼強(qiáng)度驗(yàn)證,字符串查找或替換等操作?,F(xiàn)在就開始吧,零基礎(chǔ)寫出你的第一個(gè)正則表達(dá)...
摘要:正則表達(dá)式關(guān)閉或可選標(biāo)志。如果所含正則表達(dá)式,以表示,在當(dāng)前位置成功匹配時(shí)成功,否則失敗。否則指的是八進(jìn)制字符碼的表達(dá)式。 正則表達(dá)式是個(gè)很牛逼的東西,不管是在javascript,還是在Python web開發(fā)(http://www.maiziedu.com/course/python-px...)中,我們都會(huì)遇到正則表達(dá)式,雖然javascript和Python的正則表達(dá)式區(qū)別不大...
閱讀 3616·2023-04-26 01:43
閱讀 3005·2021-10-14 09:42
閱讀 5558·2021-09-30 09:59
閱讀 2201·2021-09-04 16:40
閱讀 1235·2019-08-30 15:52
閱讀 860·2019-08-29 17:09
閱讀 2030·2019-08-26 13:37
閱讀 3457·2019-08-26 10:20