如果我們想對字符串進行相關(增、刪、改、查、檢索)操作,就可以用接下來的正則表達式實現
什麼是正則表達式
- 正則表達式是用於匹配字符串中字符組合的模式
- 正則表達式通常被用來檢索、替換那些符合某個模式(規則)的文本
那麼今天爲大家分享一個整理完整的常用正則表達式的規則與示例,希望對你學前端這條路上更加有幫助!
一、基礎匹配規則
1. 字符匹配
表達式 |
描述 |
[abc] |
字符集。匹配集合中所含的任一字符。 |
[^abc] |
否定字符集。匹配任何不在集合中的字符。 |
[a-z] |
字符範圍。匹配指定範圍內的任意字符。 |
. |
匹配除換行符以外的任何單個字符。 |
\ |
轉義字符。 |
\w |
匹配任何字母數字,包括下劃線(等價於[A-Za-z0-9_])。 |
\W |
匹配任何非字母數字(等價於[^A-Za-z0-9_])。 |
\d |
數字。匹配任何數字。 |
\D |
非數字。匹配任何非數字字符。 |
\s |
空白。匹配任何空白字符,包括空格、製表符等。 |
\S |
非空白。匹配任何非空白字符。 |
左右滑動觀看完整的內容
2. 分組和引用
表達式 |
描述 |
(expression) |
分組。匹配括號裏的整個表達式。 |
(?:expression) |
非捕獲分組。匹配括號裏的整個字符串但不獲取匹配結果,拿不到分組引用。 |
\num |
對前面所匹配分組的引用。比如(\d)\1可以匹配兩個相同的數字,(Code)(Sheep)\1\2則可以匹配CodeSheepCodeSheep。 |
左右滑動觀看完整的內容
3. 錨點、邊界
表達式 |
描述 |
^ |
匹配字符串或行開頭。 |
$ |
匹配字符串或行結尾。 |
\b |
匹配單詞邊界。比如Sheep\b可以匹配CodeSheep末尾的Sheep,不能匹配CodeSheepCode中的Sheep |
\B |
匹配非單詞邊界。比如Code\B可以匹配HelloCodeSheep中的Code,不能匹配HelloCode中的Code。 |
左右滑動觀看完整的內容
4. 數量匹配
表達式 |
描述 |
? |
匹配前面的表達式0個或1個。即表示可選項。 |
+ |
匹配前面的表達式至少1個。 |
* |
匹配前面的表達式0個或多個。 |
| |
或運算符。並集,可以匹配符號前後的表達式。 |
{m} |
匹配前面的表達式m個。 |
{m,} |
匹配前面的表達式最少m個。 |
{m,n} |
匹配前面的表達式最少m個,最多n個。 |
左右滑動觀看完整的內容
5. 預查斷言
表達式 |
描述 |
(?=) |
正向預查。比如Code(?=Sheep)能匹配CodeSheep中的Code,但不能匹配CodePig中的Code。 |
(?!) |
正向否定預查。比如Code(?!Sheep)不能匹配CodeSheep中的Code,但能匹配CodePig中的Code。 |
(?<=) |
反向預查。比如(?<=Code)Sheep能匹配CodeSheep中的Sheep,但不能匹配ReadSheep中的Sheep。 |
(?<!) |
反向否定預查。比如(?<!Code)Sheep不能匹配CodeSheep中的Sheep,但能匹配ReadSheep中的Sheep。 |
左右滑動觀看完整的內容
6. 特殊標誌
表達式 |
描述 |
/.../i |
忽略大小寫。 |
/.../g |
全局匹配。 |
/.../m |
多行修飾符。用於多行匹配。 |
左右滑動觀看完整的內容
二、常用正則表達式示例
1. 數字校驗
描述 |
正則表達式 |
備註 |
數字 |
^[0-9]*$ |
|
n位數字 |
^\d{n}$ |
|
至少n位數字 |
^\d{n,}$ |
|
m~n位數字 |
^\d{m,n}$ |
|
整數 |
^(-?[1-9]\d*)$ |
非0開頭,包括正整數和負整數 |
正整數 |
^[1-9]\d*$ |
|
負整數 |
^-[1-9]\d*$ |
|
非負整數 |
^(([1-9]\d*)|0)$ |
|
非正整數 |
^((-[1-9]\d*)|0)$ |
|
浮點數 |
^-?(?:[1-9]\d*\.\d*|0\.\d*[1-9]\d*|0\.0+|0)$ |
包括正浮點數和負浮點數 |
正浮點數 |
^(?:[1-9]\d*\.\d*|0\.\d*[1-9]\d*)$ |
|
負浮點數 |
^-(?:[1-9]\d*\.\d*|0\.\d*[1-9]\d*)$ |
|
非正浮點數 |
^(?:-(?:[1-9]\d*\.\d+|0\.\d*[1-9]\d*)|0\.0+|0)$ |
包含0 |
非負浮點數 |
^(?:[1-9]\d*\.\d+|0\.\d+|0\.0+|0)$ |
包含0 |
僅一位小數 |
^-?(?:0|[1-9][0-9]*)\.[0-9]{1}$ |
|
最少一位小數 |
^-?(?:0|[1-9][0-9]*)\.[0-9]{1,}$ |
|
最多兩位小數 |
^-?(?:0|[1-9][0-9]*)\.[0-9]{1,2}$ |
|
連續重複的數字 |
^(\d)\1+$ |
例如:111,222 |
左右滑動觀看完整的內容
2. 字符校驗
描述 |
正則表達式 |
備註 |
中文 |
^[\u4E00-\u9FA5]+$ |
|
全角字符 |
^[\uFF00-\uFFFF]+$ |
|
半角字符 |
^[\u0000-\u00FF]+$ |
|
英文字符串(大寫) |
^[A-Z]+$ |
|
英文字符串(小寫) |
^[a-z]+$ |
|
英文字符串(不區分大小寫) |
^[A-Za-z]+$ |
|
中文和數字 |
^(?:[\u4E00-\u9FA5]{0,}|\d)+$ |
|
英文和數字 |
^[A-Za-z0-9]+$ |
|
數字、英文字母或者下劃線組成的字符串 |
^\w+$ |
|
中文、英文、數字包括下劃線 |
^[\u4E00-\u9FA5\w]+$ |
|
不含字母的字符串 |
^[^A-Za-z]*$ |
|
連續重複的字符串 |
^(.)\1+$ |
例如:aa,bb |
長度爲n的字符串 |
^.{n}$ |
|
ASCII |
^[ -~]$ |
|
左右滑動觀看完整的內容
3. 日期和時間校驗
描述 |
正則表達式 |
備註 |
日期 |
^\d{1,4}-(?:1[0-2]|0?[1-9])-(?:0?[1-9]|[1-2]\d|30|31)$ |
弱校驗,<br /例如:2022-06-12 |
日期 |
^(?:(?!0000)[0-9]{4}-(?:(?:0[1-9]|1[0-2])-(?:0[1-9]|1[0-9]|2[0-8])|(?:0[13-9]|1[0-2])-(?:29|30)|(?:0[13578]|1[02])-31)|(?:[0-9]{2}(?:0[48]|[2468][048]|[13579][26])|(?:0[48]|[2468][048]|[13579][26])00)-02-29)$ |
嚴格校驗,考慮平閏年 |
時間 |
^(?:1[0-2]|0?[1-9]):[0-5]\d:[0-5]\d$ |
12小時制,例如:11:21:31 |
時間 |
^(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d$ |
24小時制,例如:23:21:31 |
日期+時間 |
^(\d{1,4}-(?:1[0-2]|0?[1-9])-(?:0?[1-9]|[1-2]\d|30|31)) ((?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d)$ |
例如:2000-11-11 23:20:21 |
左右滑動觀看完整的內容
4. 日常生活相關
描述 |
正則表達式 |
備註 |
中文名 |
^[\u4E00-\u9FA5·]{2,16}$ |
|
英文名 |
^[a-zA-Z][a-zA-Z\s]{0,20}[a-zA-Z]$ |
|
車牌號 |
^[京津滬渝冀豫雲遼黑湘皖魯新蘇浙贛鄂桂甘晉蒙陝吉閩貴粵青藏川寧瓊使領][A-HJ-NP-Z][A-HJ-NP-Z0-9]{4}[A-HJ-NP-Z0-9掛學警港澳]$ |
不含新能源 |
車牌號 |
^[京津滬渝冀豫雲遼黑湘皖魯新蘇浙贛鄂桂甘晉蒙陝吉閩貴粵青藏川寧瓊使領][A-HJ-NP-Z](?:(?:[A-HJ-NP-Z0-9]{4}[A-HJ-NP-Z0-9掛學警港澳])|(?:(?:\d{5}[A-HJK])|(?:[A-HJK][A-HJ-NP-Z0-9][0-9]{4})))$ |
包含新能源 |
火車車次 |
^[GCDZTSPKXLY1-9]\d{1,4}$ |
例如:G1234 |
手機號 |
^(?:(?:\+|00)86)?1[3-9]\d{9}$ |
弱匹配 |
手機號 |
^(?:(?:\+|00)86)?1(?:(?:3[\d])|(?:4[5-79])|(?:5[0-35-9])|(?:6[5-7])|(?:7[0-8])|(?:8[\d])|(?:9[189]))\d{8}$ |
嚴格匹配 |
固話號碼 |
^(?:(?:\d{3}-)?\d{8}|^(?:\d{4}-)?\d{7,8})(?:-\d+)?$ |
|
手機IMEI碼 |
^\d{15,17}$ |
一般是15位 |
郵編 |
^(?:0[1-7]|1[0-356]|2[0-7]|3[0-6]|4[0-7]|5[1-7]|6[1-7]|7[0-5]|8[013-6])\d{4}$ |
例如:211100 |
統一社會信用代碼 |
^[0-9A-HJ-NPQRTUWXY]{2}\d{6}[0-9A-HJ-NPQRTUWXY]{10}$ |
|
身份證號碼(1代) |
^[1-9]\d{7}(?:0\d|10|11|12)(?:0[1-9]|[1-2][\d]|30|31)\d{3}$ |
15位數字 |
身份證號碼(2代) |
^[1-9]\d{5}(?:18|19|20)\d{2}(?:0[1-9]|10|11|12)(?:0[1-9]|[1-2]\d|30|31)\d{3}[0-9Xx]$ |
18位數字 |
QQ號 |
^[1-9][0-9]{4,}$ |
一般是5到10位 |
微信號 |
^[a-zA-Z][-_a-zA-Z0-9]{5,19}$ |
一般6~20位,字母開頭,可包含字母、數字、-、_,不含特殊字符 |
股票代碼 |
^(s[hz]|S[HZ])(000[\d]{3}|002[\d]{3}|300[\d]{3}|600[\d]{3}|60[\d]{4})$ |
A股,例如:600519 |
銀行卡卡號 |
^[1-9]{1}(?:\d{15}|\d{18})$ |
一般爲19位 |
左右滑動觀看完整的內容
- 互聯網相關
描述 |
正則表達式 |
備註 |
域名 |
^[a-zA-Z0-9][-a-zA-Z0-9]{0,62}(?:\.[a-zA-Z0-9][-a-zA-Z0-9]{0,62})+$ |
例如:r2coding.com |
網址 |
^(?:https?:\/\/)?[a-zA-Z0-9][-a-zA-Z0-9]{0,62}(?:\.[a-zA-Z0-9][-a-zA-Z0-9]{0,62})+$ |
例如:https://www.***.com/ |
帶端口號的網址(或IP) |
^(?:https?:\/\/)?[\w-]+(?:\.[\w-]+)+:\d{1,5}\/?$ |
如:http://127.0.0.1:8888/ |
URL |
^https?:\/\/(?:www\.)?[-a-zA-Z0-9@:%._\+~#=]{1,256}\.[a-zA-Z0-9()]{1,6}\b(?:[-a-zA-Z0-9()!@:%_\+.~#?&\/\/=]*)$ |
例如:https://www.***.com/#/README?id=1 |
郵箱email |
^[A-Za-z0-9\u4e00-\u9fa5]+@[a-zA-Z0-9][-a-zA-Z0-9]{0,62}(?:\.[a-zA-Z0-9][-a-zA-Z0-9]{0,62})+$ |
支持中文,例如:[email protected] |
用戶名 |
^[a-zA-Z0-9_-]{4,20}$ |
4到20位 |
弱密碼 |
^[\w]{6,16}$ |
6~16位,包含大小寫字母和數字的組合 |
強密碼 |
^.*(?=.{6,})(?=.*\d)(?=.*[A-Z])(?=.*[a-z])(?=.*[!@\.#$%^&*? ]).*$ |
至少6位,包括至少1個大寫字母,1個小寫字母,1個數字,1個特殊字符 |
端口號 |
^(?:[0-9]|[1-9][0-9]{1,3}|[1-5][0-9]{4}|6[0-4][0-9]{3}|65[0-4][0-9]{2}|655[0-2][0-9]|6553[0-5])$ |
例如:65535 |
IPv4地址 |
^(?:(?:\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.){3}(?:\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])$ |
例如:192.168.31.1 |
IPv4地址+端口 |
^(?:(?:\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.){3}(?:\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])(?::(?:[0-9]|[1-9][0-9]{1,3}|[1-5][0-9]{4}|6[0-4][0-9]{3}|65[0-4][0-9]{2}|655[0-2][0-9]|6553[0-5]))?$ |
例如:192.168.31.1:8080 |
IPv6地址 |
^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))$ |
例如: |
IPv6地址+端口 |
^\[(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))\](?::(?:[0-9]|[1-9][0-9]{1,3}|[1-5][0-9]{4}|6[0-4][0-9]{3}|65[0-4][0-9]{2}|655[0-2][0-9]|6553[0-5]))?$ |
例如:[ |
子網掩碼 |
^(?:254|252|248|240|224|192|128)\.0\.0\.0|255\.(?:254|252|248|240|224|192|128|0)\.0\.0|255\.255\.(?:254|252|248|240|224|192|128|0)\.0|255\.255\.255\.(?:255|254|252|248|240|224|192|128|0)$ |
例如:255.255.255.0 |
MAC地址 |
^(?:(?:[a-f0-9A-F]{2}:){5}|(?:[a-f0-9A-F]{2}-){5})[a-f0-9A-F]{2}$ |
|
Version版本號 |
^\d+(?:\.\d+){2}$ |
例如:12.1.1 |
圖片後綴 |
\.(gif|png|jpg|jpeg|webp|svg|psd|bmp|tif)+ |
可按需增刪擴展名集合 |
視頻後綴 |
\.(swf|avi|flv|mpg|rm|mov|wav|asf|3gp|mkv|rmvb|mp4)+ |
可按需增刪擴展名集合 |
圖片鏈接 |
(?:https?:\/\/)?[a-zA-Z0-9][-a-zA-Z0-9]{0,62}(?:\.[a-zA-Z0-9][-a-zA-Z0-9]{0,62})+.+\.(gif|png|jpg|jpeg|webp|svg|psd|bmp|tif) |
可按需增刪擴展名集合 |
視頻鏈接 |
(?:https?:\/\/)?[a-zA-Z0-9][-a-zA-Z0-9]{0,62}(?:\.[a-zA-Z0-9][-a-zA-Z0-9]{0,62})+.+\.(swf|avi|flv|mpg|rm|mov|wav|asf|3gp|mkv|rmvb|mp4) |
可按需增刪擴展名集合 |
迅雷鏈接 |
thunderx?:\/\/[a-zA-Z\d]+= |
|
ed2k鏈接 |
ed2k:\/\/\|file\|.+\|\/ |
|
磁力鏈接 |
magnet:\?xt=urn:btih:[0-9a-fA-F]{40,}.* |
|
左右滑動觀看完整的內容
5. 其他
描述 |
正則表達式 |
備註 |
MD5格式 |
^(?:[a-f\d]{32}|[A-F\d]{32})$ |
32位MD5,例如: |
BASE64格式 |
^\s*data:(?:[a-z]+\/[a-z0-9-+.]+(?:;[a-z-]+=[a-z0-9-]+)?)?(?:;base64)?,([a-z0-9!$&',()*+;=\-._~:@/?%\s]*?)\s*$ |
例如:data:image/jpeg;base64,xxxx== |
UUID |
^[a-f\d]{4}(?:[a-f\d]{4}-){4}[a-f\d]{12}$ |
例如: |
16進制 |
^[A-Fa-f0-9]+$ |
例如:FFFFFF |
16進制顏色 |
^#?([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$ |
例如:#FFFFFF |
SQL語句 |
^(?:select|drop|delete|create|update|insert).*$ |
|
Java包名 |
^(?:[a-zA-Z_]\w*)+(?:[.][a-zA-Z_]\w*)+$ |
例如:com.r2coding.controller |
文件擴展名 |
\.(?:doc|pdf|txt) |
可按需增刪擴展名集合 |
Windows文件路徑 |
^[a-zA-Z]:(?:\\[\w\u4E00-\u9FA5\s]+)+[.\w\u4E00-\u9FA5\s]+$ |
例如:C:\Users\Administrator\Desktop\a.txt |
Windows文件夾路徑 |
^[a-zA-Z]:(?:\\[\w\u4E00-\u9FA5\s]+)+$ |
例如:C:\Users\Administrator\Desktop |
Linux文件路徑 |
^\/(?:[^/]+\/)*[^/]+$ |
例如:/root/library/a.txt |
Linux文件夾路徑 |
^\/(?:[^/]+\/)*$ |
例如:/root/library/ |
左右滑動觀看完整的內容
如果對你有幫助,記得點贊支持哦,目前我們的系統班正在講解JavaScript正則表達式,這個課程講完系統班的JavaScript階段就算完結了,正式開始進入ES6階段了,這幾個月我們在JavaScript課程中融入了大量的面試題、算法以及底層原理知識,目的就是爲了幫助大家夯實基礎,查漏補缺,有 紮實的JavaScript基礎,對於學到後面階段更加有幫助!這也是2023年通向職業道路,面試求職必須要懂得的技術能力!感興趣可以聯繫我參與!
爲了更好的讓大家認識到JavaScript的精髓,我們在三十天計劃羣裏推出了幾節非常重要的JavaScript課程體系,而且每個系列知識點都保障是完整的。感興趣可以通過下方的練習方式參與課程哦 。如果你正在學習JavaScript,我們已經在三十天計劃中完成了4個綜合項目實戰,那不妨可以聽下這個課程體系,三十天計劃羣裏還提供了算法、數組等知識體系!如果我們想對字符串進行相關(增、刪、改、查、檢索)操作,就可以用接下來的正則表達式實現
什麼是正則表達式
- 正則表達式是用於匹配字符串中字符組合的模式
- 正則表達式通常被用來檢索、替換那些符合某個模式(規則)的文本
那麼今天爲大家分享一個整理完整的常用正則表達式的規則與示例,希望對你學前端這條路上更加有幫助!
一、基礎匹配規則
1. 字符匹配
表達式 |
描述 |
[abc] |
字符集。匹配集合中所含的任一字符。 |
[^abc] |
否定字符集。匹配任何不在集合中的字符。 |
[a-z] |
字符範圍。匹配指定範圍內的任意字符。 |
. |
匹配除換行符以外的任何單個字符。 |
\ |
轉義字符。 |
\w |
匹配任何字母數字,包括下劃線(等價於[A-Za-z0-9_])。 |
\W |
匹配任何非字母數字(等價於[^A-Za-z0-9_])。 |
\d |
數字。匹配任何數字。 |
\D |
非數字。匹配任何非數字字符。 |
\s |
空白。匹配任何空白字符,包括空格、製表符等。 |
\S |
非空白。匹配任何非空白字符。 |
左右滑動觀看完整的內容
2. 分組和引用
表達式 |
描述 |
(expression) |
分組。匹配括號裏的整個表達式。 |
(?:expression) |
非捕獲分組。匹配括號裏的整個字符串但不獲取匹配結果,拿不到分組引用。 |
\num |
對前面所匹配分組的引用。比如(\d)\1可以匹配兩個相同的數字,(Code)(Sheep)\1\2則可以匹配CodeSheepCodeSheep。 |
左右滑動觀看完整的內容
3. 錨點、邊界
表達式 |
描述 |
^ |
匹配字符串或行開頭。 |
$ |
匹配字符串或行結尾。 |
\b |
匹配單詞邊界。比如Sheep\b可以匹配CodeSheep末尾的Sheep,不能匹配CodeSheepCode中的Sheep |
\B |
匹配非單詞邊界。比如Code\B可以匹配HelloCodeSheep中的Code,不能匹配HelloCode中的Code。 |
左右滑動觀看完整的內容
4. 數量匹配
表達式 |
描述 |
? |
匹配前面的表達式0個或1個。即表示可選項。 |
+ |
匹配前面的表達式至少1個。 |
* |
匹配前面的表達式0個或多個。 |
| |
或運算符。並集,可以匹配符號前後的表達式。 |
{m} |
匹配前面的表達式m個。 |
{m,} |
匹配前面的表達式最少m個。 |
{m,n} |
匹配前面的表達式最少m個,最多n個。 |
左右滑動觀看完整的內容
5. 預查斷言
表達式 |
描述 |
(?=) |
正向預查。比如Code(?=Sheep)能匹配CodeSheep中的Code,但不能匹配CodePig中的Code。 |
(?!) |
正向否定預查。比如Code(?!Sheep)不能匹配CodeSheep中的Code,但能匹配CodePig中的Code。 |
(?<=) |
反向預查。比如(?<=Code)Sheep能匹配CodeSheep中的Sheep,但不能匹配ReadSheep中的Sheep。 |
(?<!) |
反向否定預查。比如(?<!Code)Sheep不能匹配CodeSheep中的Sheep,但能匹配ReadSheep中的Sheep。 |
左右滑動觀看完整的內容
6. 特殊標誌
表達式 |
描述 |
/.../i |
忽略大小寫。 |
/.../g |
全局匹配。 |
/.../m |
多行修飾符。用於多行匹配。 |
左右滑動觀看完整的內容
二、常用正則表達式示例
1. 數字校驗
描述 |
正則表達式 |
備註 |
數字 |
^[0-9]*$ |
|
n位數字 |
^\d{n}$ |
|
至少n位數字 |
^\d{n,}$ |
|
m~n位數字 |
^\d{m,n}$ |
|
整數 |
^(-?[1-9]\d*)$ |
非0開頭,包括正整數和負整數 |
正整數 |
^[1-9]\d*$ |
|
負整數 |
^-[1-9]\d*$ |
|
非負整數 |
^(([1-9]\d*)|0)$ |
|
非正整數 |
^((-[1-9]\d*)|0)$ |
|
浮點數 |
^-?(?:[1-9]\d*\.\d*|0\.\d*[1-9]\d*|0\.0+|0)$ |
包括正浮點數和負浮點數 |
正浮點數 |
^(?:[1-9]\d*\.\d*|0\.\d*[1-9]\d*)$ |
|
負浮點數 |
^-(?:[1-9]\d*\.\d*|0\.\d*[1-9]\d*)$ |
|
非正浮點數 |
^(?:-(?:[1-9]\d*\.\d+|0\.\d*[1-9]\d*)|0\.0+|0)$ |
包含0 |
非負浮點數 |
^(?:[1-9]\d*\.\d+|0\.\d+|0\.0+|0)$ |
包含0 |
僅一位小數 |
^-?(?:0|[1-9][0-9]*)\.[0-9]{1}$ |
|
最少一位小數 |
^-?(?:0|[1-9][0-9]*)\.[0-9]{1,}$ |
|
最多兩位小數 |
^-?(?:0|[1-9][0-9]*)\.[0-9]{1,2}$ |
|
連續重複的數字 |
^(\d)\1+$ |
例如:111,222 |
左右滑動觀看完整的內容
2. 字符校驗
描述 |
正則表達式 |
備註 |
中文 |
^[\u4E00-\u9FA5]+$ |
|
全角字符 |
^[\uFF00-\uFFFF]+$ |
|
半角字符 |
^[\u0000-\u00FF]+$ |
|
英文字符串(大寫) |
^[A-Z]+$ |
|
英文字符串(小寫) |
^[a-z]+$ |
|
英文字符串(不區分大小寫) |
^[A-Za-z]+$ |
|
中文和數字 |
^(?:[\u4E00-\u9FA5]{0,}|\d)+$ |
|
英文和數字 |
^[A-Za-z0-9]+$ |
|
數字、英文字母或者下劃線組成的字符串 |
^\w+$ |
|
中文、英文、數字包括下劃線 |
^[\u4E00-\u9FA5\w]+$ |
|
不含字母的字符串 |
^[^A-Za-z]*$ |
|
連續重複的字符串 |
^(.)\1+$ |
例如:aa,bb |
長度爲n的字符串 |
^.{n}$ |
|
ASCII |
^[ -~]$ |
|
左右滑動觀看完整的內容
3. 日期和時間校驗
描述 |
正則表達式 |
備註 |
日期 |
^\d{1,4}-(?:1[0-2]|0?[1-9])-(?:0?[1-9]|[1-2]\d|30|31)$ |
弱校驗,<br /例如:2022-06-12 |
日期 |
^(?:(?!0000)[0-9]{4}-(?:(?:0[1-9]|1[0-2])-(?:0[1-9]|1[0-9]|2[0-8])|(?:0[13-9]|1[0-2])-(?:29|30)|(?:0[13578]|1[02])-31)|(?:[0-9]{2}(?:0[48]|[2468][048]|[13579][26])|(?:0[48]|[2468][048]|[13579][26])00)-02-29)$ |
嚴格校驗,考慮平閏年 |
時間 |
^(?:1[0-2]|0?[1-9]):[0-5]\d:[0-5]\d$ |
12小時制,例如:11:21:31 |
時間 |
^(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d$ |
24小時制,例如:23:21:31 |
日期+時間 |
^(\d{1,4}-(?:1[0-2]|0?[1-9])-(?:0?[1-9]|[1-2]\d|30|31)) ((?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d)$ |
例如:2000-11-11 23:20:21 |
左右滑動觀看完整的內容
4. 日常生活相關
描述 |
正則表達式 |
備註 |
中文名 |
^[\u4E00-\u9FA5·]{2,16}$ |
|
英文名 |
^[a-zA-Z][a-zA-Z\s]{0,20}[a-zA-Z]$ |
|
車牌號 |
^[京津滬渝冀豫雲遼黑湘皖魯新蘇浙贛鄂桂甘晉蒙陝吉閩貴粵青藏川寧瓊使領][A-HJ-NP-Z][A-HJ-NP-Z0-9]{4}[A-HJ-NP-Z0-9掛學警港澳]$ |
不含新能源 |
車牌號 |
^[京津滬渝冀豫雲遼黑湘皖魯新蘇浙贛鄂桂甘晉蒙陝吉閩貴粵青藏川寧瓊使領][A-HJ-NP-Z](?:(?:[A-HJ-NP-Z0-9]{4}[A-HJ-NP-Z0-9掛學警港澳])|(?:(?:\d{5}[A-HJK])|(?:[A-HJK][A-HJ-NP-Z0-9][0-9]{4})))$ |
包含新能源 |
火車車次 |
^[GCDZTSPKXLY1-9]\d{1,4}$ |
例如:G1234 |
手機號 |
^(?:(?:\+|00)86)?1[3-9]\d{9}$ |
弱匹配 |
手機號 |
^(?:(?:\+|00)86)?1(?:(?:3[\d])|(?:4[5-79])|(?:5[0-35-9])|(?:6[5-7])|(?:7[0-8])|(?:8[\d])|(?:9[189]))\d{8}$ |
嚴格匹配 |
固話號碼 |
^(?:(?:\d{3}-)?\d{8}|^(?:\d{4}-)?\d{7,8})(?:-\d+)?$ |
|
手機IMEI碼 |
^\d{15,17}$ |
一般是15位 |
郵編 |
^(?:0[1-7]|1[0-356]|2[0-7]|3[0-6]|4[0-7]|5[1-7]|6[1-7]|7[0-5]|8[013-6])\d{4}$ |
例如:211100 |
統一社會信用代碼 |
^[0-9A-HJ-NPQRTUWXY]{2}\d{6}[0-9A-HJ-NPQRTUWXY]{10}$ |
|
身份證號碼(1代) |
^[1-9]\d{7}(?:0\d|10|11|12)(?:0[1-9]|[1-2][\d]|30|31)\d{3}$ |
15位數字 |
身份證號碼(2代) |
^[1-9]\d{5}(?:18|19|20)\d{2}(?:0[1-9]|10|11|12)(?:0[1-9]|[1-2]\d|30|31)\d{3}[0-9Xx]$ |
18位數字 |
QQ號 |
^[1-9][0-9]{4,}$ |
一般是5到10位 |
微信號 |
^[a-zA-Z][-_a-zA-Z0-9]{5,19}$ |
一般6~20位,字母開頭,可包含字母、數字、-、_,不含特殊字符 |
股票代碼 |
^(s[hz]|S[HZ])(000[\d]{3}|002[\d]{3}|300[\d]{3}|600[\d]{3}|60[\d]{4})$ |
A股,例如:600519 |
銀行卡卡號 |
^[1-9]{1}(?:\d{15}|\d{18})$ |
一般爲19位 |
左右滑動觀看完整的內容
- 互聯網相關
描述 |
正則表達式 |
備註 |
域名 |
^[a-zA-Z0-9][-a-zA-Z0-9]{0,62}(?:\.[a-zA-Z0-9][-a-zA-Z0-9]{0,62})+$ |
例如:r2coding.com |
網址 |
^(?:https?:\/\/)?[a-zA-Z0-9][-a-zA-Z0-9]{0,62}(?:\.[a-zA-Z0-9][-a-zA-Z0-9]{0,62})+$ |
例如:https://www.***.com/ |
帶端口號的網址(或IP) |
^(?:https?:\/\/)?[\w-]+(?:\.[\w-]+)+:\d{1,5}\/?$ |
如:http://127.0.0.1:8888/ |
URL |
^https?:\/\/(?:www\.)?[-a-zA-Z0-9@:%._\+~#=]{1,256}\.[a-zA-Z0-9()]{1,6}\b(?:[-a-zA-Z0-9()!@:%_\+.~#?&\/\/=]*)$ |
例如:https://www.***.com/#/README?id=1 |
郵箱email |
^[A-Za-z0-9\u4e00-\u9fa5]+@[a-zA-Z0-9][-a-zA-Z0-9]{0,62}(?:\.[a-zA-Z0-9][-a-zA-Z0-9]{0,62})+$ |
支持中文,例如:[email protected] |
用戶名 |
^[a-zA-Z0-9_-]{4,20}$ |
4到20位 |
弱密碼 |
^[\w]{6,16}$ |
6~16位,包含大小寫字母和數字的組合 |
強密碼 |
^.*(?=.{6,})(?=.*\d)(?=.*[A-Z])(?=.*[a-z])(?=.*[!@\.#$%^&*? ]).*$ |
至少6位,包括至少1個大寫字母,1個小寫字母,1個數字,1個特殊字符 |
端口號 |
^(?:[0-9]|[1-9][0-9]{1,3}|[1-5][0-9]{4}|6[0-4][0-9]{3}|65[0-4][0-9]{2}|655[0-2][0-9]|6553[0-5])$ |
例如:65535 |
IPv4地址 |
^(?:(?:\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.){3}(?:\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])$ |
例如:192.168.31.1 |
IPv4地址+端口 |
^(?:(?:\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.){3}(?:\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])(?::(?:[0-9]|[1-9][0-9]{1,3}|[1-5][0-9]{4}|6[0-4][0-9]{3}|65[0-4][0-9]{2}|655[0-2][0-9]|6553[0-5]))?$ |
例如:192.168.31.1:8080 |
IPv6地址 |
^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))$ |
例如: |
IPv6地址+端口 |
^\[(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))\](?::(?:[0-9]|[1-9][0-9]{1,3}|[1-5][0-9]{4}|6[0-4][0-9]{3}|65[0-4][0-9]{2}|655[0-2][0-9]|6553[0-5]))?$ |
例如:[ |
子網掩碼 |
^(?:254|252|248|240|224|192|128)\.0\.0\.0|255\.(?:254|252|248|240|224|192|128|0)\.0\.0|255\.255\.(?:254|252|248|240|224|192|128|0)\.0|255\.255\.255\.(?:255|254|252|248|240|224|192|128|0)$ |
例如:255.255.255.0 |
MAC地址 |
^(?:(?:[a-f0-9A-F]{2}:){5}|(?:[a-f0-9A-F]{2}-){5})[a-f0-9A-F]{2}$ |
|
Version版本號 |
^\d+(?:\.\d+){2}$ |
例如:12.1.1 |
圖片後綴 |
\.(gif|png|jpg|jpeg|webp|svg|psd|bmp|tif)+ |
可按需增刪擴展名集合 |
視頻後綴 |
\.(swf|avi|flv|mpg|rm|mov|wav|asf|3gp|mkv|rmvb|mp4)+ |
可按需增刪擴展名集合 |
圖片鏈接 |
(?:https?:\/\/)?[a-zA-Z0-9][-a-zA-Z0-9]{0,62}(?:\.[a-zA-Z0-9][-a-zA-Z0-9]{0,62})+.+\.(gif|png|jpg|jpeg|webp|svg|psd|bmp|tif) |
可按需增刪擴展名集合 |
視頻鏈接 |
(?:https?:\/\/)?[a-zA-Z0-9][-a-zA-Z0-9]{0,62}(?:\.[a-zA-Z0-9][-a-zA-Z0-9]{0,62})+.+\.(swf|avi|flv|mpg|rm|mov|wav|asf|3gp|mkv|rmvb|mp4) |
可按需增刪擴展名集合 |
迅雷鏈接 |
thunderx?:\/\/[a-zA-Z\d]+= |
|
ed2k鏈接 |
ed2k:\/\/\|file\|.+\|\/ |
|
磁力鏈接 |
magnet:\?xt=urn:btih:[0-9a-fA-F]{40,}.* |
|
左右滑動觀看完整的內容
5. 其他
描述 |
正則表達式 |
備註 |
MD5格式 |
^(?:[a-f\d]{32}|[A-F\d]{32})$ |
32位MD5,例如: |
BASE64格式 |
^\s*data:(?:[a-z]+\/[a-z0-9-+.]+(?:;[a-z-]+=[a-z0-9-]+)?)?(?:;base64)?,([a-z0-9!$&',()*+;=\-._~:@/?%\s]*?)\s*$ |
例如:data:image/jpeg;base64,xxxx== |
UUID |
^[a-f\d]{4}(?:[a-f\d]{4}-){4}[a-f\d]{12}$ |
例如: |
16進制 |
^[A-Fa-f0-9]+$ |
例如:FFFFFF |
16進制顏色 |
^#?([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$ |
例如:#FFFFFF |
SQL語句 |
^(?:select|drop|delete|create|update|insert).*$ |
|
Java包名 |
^(?:[a-zA-Z_]\w*)+(?:[.][a-zA-Z_]\w*)+$ |
例如:com.r2coding.controller |
文件擴展名 |
\.(?:doc|pdf|txt) |
可按需增刪擴展名集合 |
Windows文件路徑 |
^[a-zA-Z]:(?:\\[\w\u4E00-\u9FA5\s]+)+[.\w\u4E00-\u9FA5\s]+$ |
例如:C:\Users\Administrator\Desktop\a.txt |
Windows文件夾路徑 |
^[a-zA-Z]:(?:\\[\w\u4E00-\u9FA5\s]+)+$ |
例如:C:\Users\Administrator\Desktop |
Linux文件路徑 |
^\/(?:[^/]+\/)*[^/]+$ |
例如:/root/library/a.txt |
Linux文件夾路徑 |
^\/(?:[^/]+\/)*$ |
例如:/root/library/ |
左右滑動觀看完整的內容
如果對你有幫助,記得點贊支持哦,目前我們的系統班正在講解JavaScript正則表達式,這個課程講完系統班的JavaScript階段就算完結了,正式開始進入ES6階段了,這幾個月我們在JavaScript課程中融入了大量的面試題、算法以及底層原理知識,目的就是爲了幫助大家夯實基礎,查漏補缺,有 紮實的JavaScript基礎,對於學到後面階段更加有幫助!這也是2023年通向職業道路,面試求職必須要懂得的技術能力!感興趣可以聯繫我參與!
爲了更好的讓大家認識到JavaScript的精髓,我們在三十天計劃羣裏推出了幾節非常重要的JavaScript課程體系,而且每個系列知識點都保障是完整的。感興趣可以通過下方的練習方式參與課程哦 。如果你正在學習JavaScript,我們已經在三十天計劃中完成了4個綜合項目實戰,那不妨可以聽下這個課程體系,三十天計劃羣裏還提供了算法、數組等知識體系!
前端工程師成長方法
更多完整 JavaScript 課程體系在我們的系統班裏有完整的呈現,包含了 JavaScript 基礎篇、重點、算法、原理、面試題、實戰案例講解!同時也爲你提供了前端高級工程師成長體系!(詳細看下圖內容)
如果需要深度學習的同學可以聯繫助理老師瞭解詳細的課程以及課程的報名方式!(不定期會推出活動,有大額優惠券推出,活動詳情聯繫助理老師瞭解即可!)如果你纔開始學習前端,那麼可以先學習我們的三十天計劃(零基礎的同學報名系統班同學可以和老師溝通制定學習計劃,可以得到更快的成長!)
爲幫助到一部分同學不走彎路,真正達到一線互聯網大廠前端項目研發要求,首次實力寵粉,打造了《30天挑戰學習計劃》,內容如下:
HTML/HTML5,CSS/CSS3,JavaScript,真實企業項目開發,雲服務器部署上線,從入門到精通
- PC端項目開發(1個)
- 移動WebApp開發(2個)
- 多端響應式開發(1個)
共4大完整的項目開發 !一行一行代碼帶領實踐開發,實際企業開發怎麼做我們就是怎麼做。從學習一開始就進入工作狀態,省得浪費時間。
從學習一開始就同步使用 Git 進行項目代碼的版本的管理,Markdown 記錄學習筆記,包括真實大廠項目的開發標準和設計規範,命名規範,項目代碼規範,SEO優化規範
從藍湖UI設計稿 到 PC端,移動端,多端響應式開發項目開發
- 真機調試,雲服務部署上線;
- Linux環境下 的 Nginx 部署,Nginx 性能優化;
- Gzip 壓縮,HTTPS 加密協議,域名服務器備案,解析;
- 企業項目域名跳轉的終極解決方案,多網站、多系統部署;
- 使用 使用 Git 在線項目部署;
這些內容在《30天挑戰學習計劃》中每一個細節都有講到,包含視頻+圖文教程+項目資料素材等。只爲實力寵粉,真正一次掌握企業項目開發必備技能,不走彎路 !
過程中【不涉及】任何費用和利益,非誠勿擾 。
如果你沒有添加助理老師微信,可以添加下方微信,說明要參加30天挑戰學習計劃,來自今日頭條!老師會邀請你進入學習,並給你發放相關資料。