【轉】知道這20個正則表達式,能讓你少寫1,000行代碼

正則表達式,一個十分古老而又強大的文本處理工具,僅僅用一段非常簡短的表達式語句,便能夠快速實現一個非常復雜的業務邏輯。熟練地掌握正則表達式的話,能夠使你的開發效率得到極大的提升。下面是@技匠整理的,在前端開發中經常使用到的20個正則表達式。

正則表達式經常被用于字段或任意字符串的校驗,如下面這段校驗基本日期格式的JavaScript代碼:

1
2
3
varreg=/^(\d{1,4})(-|\/)(\d{1,2})\2(\d{1,2})$/;
varr=fieldValue.match(reg);
if(r==null)alert('Dateformaterror!');

1.校驗密碼強度

密碼的強度必須是包含大小寫字母和數字的組合,不能使用特殊字符,長度在8-10之間。

1
^(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{8,10}$

2.校驗中文

字符串僅能是中文。

1
^[\u4e00-\u9fa5]{0,}$

3.由數字、26個英文字母或下劃線組成的字符串

1
^\w+$

4.校驗E-Mail地址

同密碼一樣,下面是E-mail地址合規性的正則檢查語句。

1
[\w!#$%&'*+/=?^_`{|}~-]+(?:\.[\w!#$%&'*+/=?^_`{|}~-]+)*@(?:[\w](?:[\w-]*[\w])?\.)+[\w](?:[\w-]*[\w])?

5.校驗身份證號碼

下面是身份證號碼的正則校驗。15或18位。

15位:

1
^[1-9]\d{7}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}$

18位:

1
^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}([0-9]|X)$

6.校驗日期

“yyyy-mm-dd“格式的日期校驗,已考慮平閏年。

1
^(?:(?!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)$

7.校驗金額

金額校驗,精確到2位小數。

1
^[0-9]+(.[0-9]{2})?$

8.校驗手機號

下面是國內13、15、18開頭的手機號正則表達式。(可根據目前國內收集號擴展前兩位開頭號碼)

1
^(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}$

9.判斷IE的版本

IE目前還沒被完全取代,很多頁面還是需要做版本兼容,下面是IE版本檢查的表達式。

1
^.*MSIE[5-8](?:\.[0-9]+)?(?!.*Trident\/[5-9]\.0).*$

10.校驗IP-v4地址

IP4正則語句。

1
\b(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\b

11.校驗IP-v6地址

IP6正則語句。

1
(([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]))

12.檢查URL的前綴

應用開發中很多時候需要區分請求是HTTPS還是HTTP,通過下面的表達式可以取出一個url的前綴然后再邏輯判斷。

1
2
3
4
if(!s.match(/^[a-zA-Z]+:\/\//))
{
s='http://'+s;
}

13.提取URL鏈接

下面的這個表達式可以篩選出一段文本中的URL。

1
^(f|ht){1}(tp|tps):\/\/([\w-]+\.)+[\w-]+(\/[\w-./?%&=]*)?

14.文件路徑及擴展名校驗

驗證windows下文件路徑和擴展名(下面的例子中為.txt文件)

1
^([a-zA-Z]\:|\\)\\([^\\]+\\)*[^\/:*?"<>|]+\.txt(l)?$

15.提取ColorHexCodes

有時需要抽取網頁中的顏色代碼,可以使用下面的表達式。

1
^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$

16.提取網頁圖片

假若你想提取網頁中所有圖片信息,可以利用下面的表達式。

1
\]*[src]*=*[\"\']{0,1}([^\"\'\>]*)

17.提取頁面超鏈接

提取html中的超鏈接。

1
(]*)(href="https?:\/\/)((?!(?:(?:www\.)?'.implode('|(?:www\.)?',$follow_list).'))[^"]+)"((?!.*\brel=)[^>]*)(?:[^>]*)>

18.查找CSS屬性

通過下面的表達式,可以搜索到相匹配的CSS屬性。

1
^\s*[a-zA-Z\-]+\s*[:]{1}\s[a-zA-Z0-9\s.#]+[;]{1}

19.抽取注釋

如果你需要移除HMTL中的注釋,可以使用如下的表達式。

1
<br>

20.匹配HTML標簽

通過下面的表達式可以匹配出HTML中的標簽屬性。

1
<\/?\w+((\s+\w+(\s*=\s*(?:".*?"|'.*?'|[\^'">\s]+))?)+\s*|\s*)\/?>

正則表達式的相關語法

下面是我找到的一張非常不錯的正則表達式Cheat Sheet,可以用來快速查找相關語法。

3qd20160510

學習正則表達式

我在網上看到了一篇相當不錯的正則表達式快速學習指南,有興趣繼續深入學習的同學可以參考。

2qd20160510

正則表達式在線測試工具

regex101是一個非常不錯的正則表達式在線測試工具,你可以直接在線測試你的正則表達式哦。

1qd20160510

如果你也收藏了非常有用的正則表達式,不妨也在點評中分享哦^_^

轉載于:https://www.cnblogs.com/gatsbywang/p/5488629.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/284738.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/284738.shtml
英文地址,請注明出處:http://en.pswp.cn/news/284738.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Lintcode165 Merge Two Sorted Lists solution 題解

【題目描述】Merge two sorted (ascending) linked lists and return it as a new sorted list. The new sorted list should be made by splicing together the nodes of the two lists and sorted in ascending order.將兩個排序鏈表合并為一個新的排序鏈表.【題目鏈接】www.…

Dapr中國社區網站(預覽版)發布!

點擊藍字關注我們社區介紹Dapr 是一個可移植的、事件驅動的運行時&#xff0c;它使任何開發人員能夠輕松構建出彈性的、無狀態和有狀態的應用程序&#xff0c;并可運行在云平臺或邊緣計算中。Dapr 中國社區是一個以 Dapr 為中心的中立而開放的技術社區&#xff0c;為 Dapr 用戶…

【ArcGIS風暴】ArcGIS自動生成標識碼(BSM)的兩種方法案例教程

1. 標識碼編制規則 按照每個圖層要素的標識碼應具有唯一代碼的基本要求,根據《GB/T 7027-2002 信息分類和編碼的基本原則與方法》規定的信息分類原則和方法,要素標識碼采用二層 20 位層次碼結構,由村級行政區劃代碼、要素標識碼順序號構成。具體如下: (1)第一層為村級行…

數據分析入門_char01

數據分析入門_char01 轉載于:https://www.cnblogs.com/zsr0401/p/6370697.html

ubuntu kvm 部署安裝 ? 快照

cat /proc/cpuinfo | egrep vmx|svmapt-get install qemu-kvm libvirt-bin virt-managerbridge-utilslsmod | grep kvmvirsh -c qemu:///system list這個是安裝kvm 然后添加虛擬機qemu-img info aa.img 查看虛擬機現在的事什么格式qemu-img convert -f raw -O qcow2 aa.img…

將excel多個工作表(表結構相同)合并后生成csv文件

import csv import openpyxl as xls import pandas as pd import codecswb xls.load_workbook(rE:\xlsxFile.xlsx) # 獲取workbook中所有的表格 sheets wb.get_sheet_names() dataRows [] # 循環遍歷所有sheet for t in range(len(sheets)):sheet wb.get_sheet_by_name(she…

【BIM入門實戰】Revit2018項目模板、族庫圖文安裝教程

【擴展閱讀】:【MIB】Win11平臺上Revit 2018_x64簡體中文版圖文安裝與卸載完整教程 一、Revit 族庫、項目樣板缺失的產生原因 1、斷網或者網絡不穩定環境下安裝Revit。 2、Revit配置安裝界面中取消勾選“Autodesk Revit Content Librabries”。 3、下載了沒有自帶族庫的軟件…

一臺服務部署多個tomcat注意事項

第一步 添加tomcat環境變量 # vim /etc/profile加入下代碼 # TOMCAT ATALINA_BASE/usr/local/tomcat8CATALINA_HOME/usr/local/tomcat8TOMCAT_HOME/usr/local/tomcat8export ATALINA_BASE CATALINA_HOME TOMCAT_HOME 修改應用環境變量&#xff0c;是配置生效# source /etc/pro…

python 使用 sha256 函數對密碼進行加密

在 hashlib 庫中&#xff0c;可以使用 sha256 函數對密碼進行加密。下面是一個示例代碼&#xff1a; import hashlibdef hash_password(password):# 創建一個 sha256 對象sha256_hash hashlib.sha256()# 使用 update() 方法將密碼傳入 sha256 對象sha256_hash.update(passwor…

今天面試一個老程序員,號稱自帶資源,竟然是從所有前公司偷拷的源代碼!...

說到“自帶資源”&#xff0c;你會想到什么&#xff1f;一位程序員的“資源”令人震驚&#xff1a;竟然是從前公司偷的源代碼&#xff01;一位網友說&#xff1a;今天面試一個老程序員&#xff0c;說自己有5年的開發經驗&#xff0c;離職原因是上家公司倒閉了。上機測試啥都不會…

第17課:RDD案例(join、cogroup等實戰)

本節課通過代碼實戰演示RDD中最重要的兩個算子&#xff0c;join和cogroupjoin算子代碼實戰&#xff1a;//通過代碼演示join算子val conf new SparkConf().setAppName("RDDDemo").setMaster("local")val sc new SparkContext(conf)val arr1 Array(Tuple2…

【ArcGIS風暴】根據海拔(坡度)范圍分級統計土地覆蓋的類型和面積(蘭州市GlobeLand30m數據為例)

本文基于DEM和GlobeLand30m土地覆蓋數據,講解根據海拔范圍和坡度范圍分級逐級統計蘭州市土地覆蓋的類型和面積。 一、數據準備 1. DEM數據 海拔和坡度分級都要基于dem來實現。文中采用的DEM數據空間分辨率為30m,由甘肅省30mdem掩膜提取而來,加載如下所示: 2. 土地覆蓋數據…

html5 彈性布局

html5 彈性布局 一、移動開發常用技巧 Viewport基本知識 設置布局Viewport的各種信息1、widthdevice-width&#xff1b; 設置Viewport視口寬度等于設備寬度2、initial-scale1&#xff1b; 網頁默認縮放比為1(網頁在手持設備上&#xff0c;不會進行默認縮放3、minimum-scale1 網…

Excel 宏代碼實現按相同值分組設置背景顏色

AltF11&#xff0c;打開編輯器&#xff0c;按如下代碼編寫代碼&#xff1a; Sub SetGroupBg()Dim i, j, cColors Array("#CEFFCE", "#D7FFEE", "#D9FFFF", "#C4E1FF", "#DDDDFF", "#FFDAC8", "#FFE4CA&quo…

開源WPF控件庫-AdonisUI

原文&#xff1a;https://github.com/benruehl/adonis-ui翻譯&#xff1a;沙漠盡頭的狼(谷歌翻譯加持)用于 WPF 應用程序的輕量級 UI 工具包&#xff0c;提供經典和增強的 Windows 視覺效果:倉庫信息倉庫地址&#xff1a;https://github.com/benruehl/adonis-uiDemo&#xff1a…

Unity3D腳本的生命周期(執行順序)

Unity腳本中有許多固定的函數 例如Start();Update(); 而這些函數都有固定的執行順序 搞清楚這些函數的執行順序 對于我們理清代碼的邏輯就顯得尤為重要 舉個簡單的例子 //腳本A public static int a 1; void Start(){a 2; }//腳本B void Start(){Debug.Log(A.a); } 這時&…

【ArcGIS微課1000例】0023:ArcGIS將地理照片(無人機照片)轉為點(航跡)案例教程

本文演示在ArcGIS中,批量將無人機航測獲取的帶有地理坐標的照片轉為點,形成航線軌跡,并計算出三維坐標,為航測數據內業處理提供一定的基礎支持。 1. 效果展示 無人機正射照片: 地理坐標轉點(航跡): 2. 工具介紹 在ArcGIS中提供了批量將無人機多張照片自帶的地理坐標轉…

微信上傳圖文消息素材40007,invalid media_id hint

上傳圖文消息素材40007&#xff0c;invalid media_id hint&#xff0c;微信40007 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 蕃薯耀 2016年5月16日 08:37:24 星期一 ht…

《A Seat at the Table》作者訪談錄

\本文要點\\CIO&#xff08;首席信息官&#xff09;和IT領導者們必須重新定義他們的IT組織與其他企業之間的關系&#xff0c;只有這樣才能利用DevOps帶來的敏捷和開發周期的縮短。\\t傳統的觀點認為&#xff0c;IT部門是“業務”的一個獨立承包商&#xff0c;這樣的觀點阻礙了公…

WPF效果第一百九十二篇之TreeView支持多選

前面一篇文章中玩耍了框選ListBox的效果;今天要分享基于TreeView實現節點得多選操作,最終實現的效果,如下圖:1、參考項目:https://github.com/cmyksvoll/MultiSelectTreeView2、我在里面增加了一個路由事件public static readonly RoutedEvent SelectedItemsChangedEvent Even…