JavaScript 常用正則示例

来源:https://www.cnblogs.com/cb-bin/archive/2018/02/26/8474640.html
-Advertisement-
Play Games

1. trim功能(清除字元串兩端空格) String.prototype.trim = function() { return this.replace(/(^\s+)|(\s+$)/g, ''); };' abc '.trim();// 輸出 "abc" 2. 提取瀏覽器中url的參數名和參數值 ...


1. trim功能(清除字元串兩端空格)

String.prototype.trim = function() {
 return this.replace(/(^\s+)|(\s+$)/g, '');

};

' abc '.trim();
// 輸出 "abc"

 

2. 提取瀏覽器中url的參數名和參數值

function getUrlParam(url) {

  var result = {},

      url = url || window.location.href,

      reg = /([\?|&])(.+?)=([^&?]*)/gi,

      arr = reg.exec(url);

  

  while(arr) {
    result[arr[2]] = arr[3];

    arr = reg.exec(url);

  }

 

  return result;



getUrlParam('https://www.baidu.com?a=0&b=1&c=2');
// 輸出 "{a: "0", b: "1", c: "2"}"

 

3. 擴展typeof,探明具體類型

function getType(obj) {
 var result = Object.prototype.toString.call(obj);
     result = result.replace(/\[object\s(\w+)\]/, '$1');

  

  return result;



getType([1,2]);
// 輸出 "Array"
getType(null);
// 輸出 "Null"

 

4. 在字元串的指定位置插入新字元

String.prototype.insertAt = function(str, index) {

  index += 1;

  var reg = new RegExp('(^.{' + index + '})');

 

  return this.replace(reg, '$1' + str);

}; 
 
'abcde'.insertAt('123', 2);
// 輸出 "abc123de"

 

5. 隱藏手機號中間4位

function telFormat(tel) {

  tel = String(tel);
 

  return tel.replace(/(\d{3})(\d{4})(\d{4})/, '$1****$3');

}   

telFormat(13899207998);
// 輸出 "138****7998"

 

6. 字元串調換

var name = "Doe Jone";

name.replace(/(\w+)\s* \s*(\w+)/, "$2 $1"); 
// 輸出 "Jone Doe"

 

7. 字元串截取

var str = ' asfdf === sdfaf ##';

str.match(/[^===]+(?=[===])/g);

// 輸出 " asfdf "

 

8. 檢測密碼強度正則

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

/^(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{8,10}$/.test("weeeeeeeW2");
// 輸出 true 

// 密碼強度正則,最少6位,包括至少1個大寫字母,1個小寫字母,1個數字,1個特殊字元

/^.*(?=.{6,})(?=.*\d)(?=.*[A-Z])(?=.*[a-z])(?=.*[!@#$%^&*? ]).*$/.test("diaoD123#");

// 輸出 true 

 

9. 檢測中文字元

// 檢測字元串是否只含中文

/^[\u4e00-\u9fa5]{0,}$/.test("但是d");
// 輸出 false

/^[\u4e00-\u9fa5]{0,}$/.test("但是");
// 輸出 true

// 包含有中文

/[\u4E00-\u9FA5]/.test("但是d");
// 輸出 true

 

10. 身份證號正則

/^[1-9]\d{5}(18|19|([23]\d))\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$/.test("42112319870115371X");

// 輸出 false

 

11. 校驗日期 (“yyyy-mm-dd“ 格式,已考慮平閏年)

// 日期正則,簡單判定,未做月份及日期的判定

var dP1 = /^\d{4}(\-)\d{1,2}\1\d{1,2}$/;

console.log(dP1.test("2017-05-11"));

// 輸出 true

console.log(dP1.test("2017-15-11"));
// 輸出 true

// 日期正則,複雜判定

var dP2 = /^(?:(?!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)$/;

console.log(dP2.test("2017-02-11"));
// 輸出 true

console.log(dP2.test("2017-15-11"));

// 輸出 false

console.log(dP2.test("2017-02-29"));

// 輸出 false

 

12. 浮點數正則

// 驗證是否為浮點數

/^(?:[-+])?(?:[0-9]+)?(?:\.[0-9]*)?(?:[eE][\+\-]?(?:[0-9]+))?$/.test(0.2);
// 輸出 true 

 

13. Email正則

// 驗證Email
/^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/.test("[email protected]"); 
 

// 1.郵箱以a-z、A-Z、0-9開頭,最小長度為1.

// 2.如果左側部分包含-、_、.則這些特殊符號的前面必須包一位數字或字母。

// 3.@符號是必填項

// 4.右則部分可分為兩部分,第一部分為郵件提供商功能變數名稱地址,第二部分為功能變數名稱尾碼,現已知的最短為2位。

//   最長的為6為。

// 5.郵件提供商域可以包含特殊字元-、_、.

/^[a-z0-9]+([._\\-]*[a-z0-9])*@([a-z0-9]+[-a-z0-9]*[a-z0-9]+.){1,63}[a-z0-9]+$/.test("[email protected]");
// 輸出 true

 

14. 校驗傳真號碼

// 國家代碼(2到3位)-區號(2到3位)-電話號碼(7到8位)-分機號(3位)

/^(([0\+]\d{2,3}-)?(0\d{2,3})-)(\d{7,8})(-(\d{3,}))?$/.test('021-5055455');
// 輸出 true

 

15. 手機號正則

/^1[34578]\d{9}$/.test("13611778887");

// 輸出 true

//* 13段:130、131、132、133、134、135、136、137、138、139

//* 14段:145、147

//* 15段:150、151、152、153、155、156、157、158、159

//* 17段:170、176、177、178

//* 18段:180、181、182、183、184、185、186、187、188、189

//* 國際碼 如:中國(+86)

/^((\+?[0-9]{1,4})|(\(\+86\)))?(13[0-9]|14[57]|15[012356789]|17[03678]|18[0-9])\d{8}$/.test("1

// 輸出 true

 

16. URL正則

/^((https?|ftp|file):\/\/)?([\da-z\.-]+)\.([a-z\.]{2,6})([\/\w \.-]*)*\/?$/.test("http://wangchujiang.com");

// 輸出 true

 

// 獲取url中功能變數名稱、協議正則 'http://xxx.xx/xxx','https://xxx.xx/xxx','//xxx.xx/xxx'

/^(http(?:|s)\:)*\/\/([^\/]+)/.test("http://www.baidu.com");

// 輸出 true

/^((http|https):\/\/(\w+:{0,1}\w*@)?(\S+)|)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?$/.test('https://www.baidu.com/s?wd=@#%$^&%$#');

// 輸出 true

// 必須有協議 

/^[a-zA-Z]+:\/\//.test("http://www.baidu.com");
// 輸出 true

 

17. RGB Hex顏色正則

/^#?([a-fA-F0-9]{6}|[a-fA-F0-9]{3})$/.test("#b8b8b8");

// 輸出 true

 

18. 車牌號正則

/^[京津滬渝冀豫雲遼黑湘皖魯新蘇浙贛鄂桂甘晉蒙陝吉閩貴粵青藏川寧瓊使領A-Z]{1}[A-Z]{1}[A-Z0-9]{4}[A-Z0-9掛學警港澳]{1}$/.test("滬B99116");
// 輸出 true

 

19. 校驗微信號

// 6至20位,以字母開頭,字母,數字,減號,下劃線
/^[a-zA-Z]([-_a-zA-Z0-9]{5,19})+$/.test("jslite");
// 輸出 true

 

20. 校驗QQ號

// 5至11位

/^[1-9][0-9]{4,10}$/.test("398188661");
// 輸出 true


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 本文最初發表於 "博客園" ,併在 "GitHub" 上持續更新 前端的系列文章 。歡迎在GitHub上關註我,一起入門和進階前端。 以下是正文。 CSS 預處理器 為什麼要有 CSS 預處理器 CSS基本上是設計師的工具,不是程式員的工具 。在程式員的眼裡,CSS是很頭痛的事情,它並不像其它程式語 ...
  • 簡要介紹:箭頭函數中的this,指向與一般function定義的函數不同,箭頭函數this的定義:箭頭函數中的this是在定義函數的時候綁定,而不是在執行函數的時候綁定。 (1)一般函數this指向在執行是綁定 當運行obj.say()時候,this指向的是obj這個對象。 (2)所謂的定義時候綁定 ...
  • JS基礎 頁面由三部分組成: + html:超文本標記語言,負責頁面結構 + css:層疊樣式表,負責頁面樣式 + js:輕量級的腳本語言,負責頁面的動效和數據交互 小總結:結構,樣式和行為,三者相分離 + 在html頁面中寫結構 + 通過 link標簽的href屬性,引入css樣式 + 通過scr ...
  • 整個前端開發的工作流程 1. 產品經理提出項目需求 2. UI出設計稿 3. 前端人員負責開發靜態頁面(跟前端同步的後臺人員在準備數據) 4. 前後臺的交互 5. 測試 6. 產品上線(後期項目維護) 互聯網原理 1. 當用戶在瀏覽器輸入網址的時候,就會發送到對應的伺服器,請求該網址對應的網頁信息 ...
  • 上回我們說到ES5的面向對象,以及被大家公認的最佳的寄生組合式繼承。時代在進步,在ES6中對於面向對象這個大boss理所應當地進行了一次大改,從原先那種比較長的寫法轉變為“小清新”寫法。我們一起來看一下。 在ES6中是有類這個概念,而且是堂而皇之地有了。 我們來看一串代碼: 其實我們用的依然是上回說 ...
  • CSS樣式表 CSS可算是網頁設計的一個突破,它解決了網頁界面排版的難題。可以這麼說,HTML的Tag主要是定義網頁的內容(Content),而CSS決定這些網頁內容如何顯示(Layout)。 Web早期,HTML是一種很有限的語言,這種語言不關心外觀,它只是一種簡潔的小型標記機制。 隨著Mosai ...
  • Git介紹 Git是分散式版本控制系統 集中式VS分散式,SVN VS Git 1)SVN和Git主要的區別在於歷史版本維護的位置 2)這兩個工具主要的區別在於歷史版本維護的位置Git本地倉庫包含代碼庫還有歷史庫,在本地的環境開發就可以記錄歷史而SVN的歷史庫存在於中央倉庫,每次對比與提交代碼都必須 ...
  • 前言: 最近在學習HTML、CSS的過程中,想模仿一下百度首頁。發現搜索框這一部分與上下其它元素的空白距離可以隨著視窗大小變化(效果如下圖所示),於是自己研究了一下並記錄下來。 效果實現 分析 利用的原理: ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...