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