狠狠色丁香婷婷综合尤物/久久精品综合一区二区三区/中国有色金属学报/国产日韩欧美在线观看 - 国产一区二区三区四区五区tv

LOGO OA教程 ERP教程 模切知識交流 PMS教程 CRM教程 開發文檔 其他文檔  
 
網站管理員

用“人話”講明白10個最常用的正則表達式

freeflydom
2025年7月7日 11:20 本文熱度 102

正則這玩意兒,在我剛入行的時候,簡直就是我的噩夢。網上搜來的代碼,只要帶RegExp,我基本就是復制粘貼,然后默默祈禱它能跑。那串鬼畫符到底啥意思?我不敢問,也不想懂。

但后來,你總會遇到一些繞不開的場景,比如校驗用戶輸入的表單。總復制粘貼也不是個事兒,萬一產品經理說規則要改一下呢?你總不能再去網上搜一圈吧。

沒辦法,硬著頭皮學了一下。后來發現,其實我們日常開發,尤其是前端,真正用得上的,來來回回就那么幾個。你只要把這幾個“套路”搞明白了,就能解決80%的問題。

今天,就把我總結的這10個“套路”分享給你。我不講復雜的原理,咱就用“人話”講明白。


1. 校驗手機號碼

驗證用戶輸入的是不是一個“1”開頭、第二位是3~9之間的任意數字,后面再跟9個數字,總共11位的中國大陸手機號。

const regex = /^1[3-9]\d{9}$/;

拆解講解一下:

  • ^:這個東西叫“行首定位符”,你可以理解為“從頭開始檢查”。
  • 1:手機號第一個數字必須是1。這是鐵律,國家規定的。
  • [3-9]:第二位必須是3~9之間的一個數字,常見的號段(像138、147、166、199等)都在這兒。
  • \d{9}:后面跟著9個數字,這沒啥好說的。
  • $:這是“行尾定位符”,意思是檢查到這就結束了,后面不能有其他字符

連接起來就是:從頭開始,必須以1開頭,第二位是3~9,然后再跟9個數字,一共11位,干凈整齊,不能有符號、空格、括號啥的。

  • 測試一下:

    regex.test('13812345678'); // true
    regex.test('14712345678'); // true
    regex.test('12345678901'); // ? false(第二位不是3-9)
    regex.test('11812345678'); // ? false(不在合法號段內)
    regex.test('138-1234-5678'); // ? false(不能有橫線)
    regex.test('1381234567'); // ? false(少了一位)
    regex.test('138123456789'); // ? false(多了一位)
    

2. 校驗電子郵件 (Email)

檢查用戶輸入的是不是一個像xxx@yyy.zzz格式的郵箱。

const regex = /^\w+([-+.]\w+)*@\w+([-.]\w+)*.\w+([-.]\w+)*$/;

(我知道這個看起來嚇人,別怕,我們慢慢拆)

  • ^ 和 $:老朋友了,從頭到尾。
  • \w:意思是“任意一個字母、數字或下劃線”。。
  • +:意思是“前面的那個東西,至少要出現1次,多幾次也行”。所以 \w+ 就是“一串字母數字下劃線”。
  • [...]:中括號,意思是“里面的字符,隨便選一個就行”。比如 [-+.] 就是說“可以是橫杠,可以是加號,也可以是點”。
  • *:意思是“前面的那個東西,可以不出現(0次),也可以出現好多次”。
  • ():括號是“分組”,就是把一堆東西包起來當成一個整體。

現在我們把上面那坨再走一遍:

  1. ^\w+:以一串字母/數字/下劃線開頭。

  2. ([-+.]\w+)*:后面可以跟好幾個“特殊符號(點/加號/橫杠) + 一串字母數字”的組合 (比如 -smith 或者 .123)。

  3. @:然后必須有個@符號。

  4. 后面的 \w+([-.]\w+)*:跟前面一樣,是域名部分 (比如 gmail 或者 company-inc)。

  5. .:這個 `` 是“轉義符”,因為 . 在正則里有特殊含義(代表任意字符),所以要用 . 來告訴它,我這里就是要一個普普通通的“點”。

  6. 最后一部分跟域名一樣,就是頂級域名部分 (比如 com)。

regex.test('test.user-1@gmail.com'); // true
regex.test('test@gmail'); // false (沒有.com)

3. 校驗密碼強度

檢查密碼是不是至少8個字符,并且同時包含字母和數字。

const regex = /^(?=.*[A-Za-z])(?=.*\d)[A-Za-z\d]{8,}$/;
  • 這個新的東西叫 (?=...),它叫 “正向先行斷言”,聽著嚇人,其實意思很簡單,就是 “往后看,看看是不是滿足某個條件,但看完不消耗字符,只是檢查一下而已”。
  • (?=.*[A-Za-z]):往后瞅瞅,有沒有字母?(.*意思是任意字符出現任意次數)
  • (?=.*\d):再往后瞅瞅,有沒有數字?
  • [A-Za-z\d]{8,}:好了,不瞅了,正式開始匹配。這里必須是字母或數字,并且 {8,} 意思是“至少出現8次”。

連起來就是:從頭到尾,必須滿足“含有字母”和“含有數字”這兩個條件,并且整個字符串是由至少8個字母或數字組成的。

  • 測試一下:
    regex.test('password123'); // true
    regex.test('password'); // false (沒有數字)
    regex.test('12345678'); // false (沒有字母)
    regex.test('pass123'); // false (不夠8位)
    

4. 只允許輸入中文

檢查字符串是不是全都是中文字。

const regex = /^[\u4e00-\u9fa5]+$/;
  • [\u4e00-\u9fa5]:這是中文字符在Unicode編碼里的范圍。你就把它當成一個“中文專用”的[A-Z]就行了。

  • +:這些中文字,至少要有一個。

  • 測試一下:

    regex.test('你好世界'); // true
    regex.test('你好world'); // false
    

5. 提取URL中的域名

從一個網址里,把域名給摳出來。

   const regex = /^(?:https?://)?(?:[^/]+)/i;
  • (?:...):這個叫“非捕獲組”,跟()差不多,也是打包,但它只匹配,不“抓”下來存著,效率高點。

  • https?s后面的?意思是“s這個字母,可以有,也可以沒有”。所以就能匹配httphttps。

  • ://:就是普通的://。

  • [^/]+:這里的 ^ 是在中括號[]里面,意思反了,是“不要匹配斜杠/”。所以 [^/]+ 就是“一串不包含斜杠的字符”。

  • /i:最后的i是個修飾符,意思是“忽略大小寫”(ignore case)。

  • 測試一下:

    'https://juejin.cn/user/123'.match(regex)[0]; // "https://juejin.cn"
    'www.google.com/search'.match(regex)[0]; // "www.google.com"
    

(為保持簡潔,下面5個只列出核心,大家可以舉一反三)

6. 校驗身份證號碼

  • 正則: /^[1-9]\d{5}(19|20)\d{2}(0[1-9]|1[0-2])(0[1-9]|[12]\d|3[01])\d{3}[\dXx]$/
  • 解釋:
    • 前6位:地址碼,[1-9]\d{5}

    • 接著8位:出生日期,(19|20)\d{2}(0[1-9]|1[0-2])(0[1-9]|[12]\d|3[01])

      • 年份:1900–2099
      • 月份:01–12
      • 日期:01–31
    • 接著3位:順序碼,\d{3}

    • 最后1位:校驗碼,可能是數字或 X(大小寫),[\dXx]

7. 匹配HTML標簽

  • 正則: /<(.*?)>/
  • 解釋: 抓取尖括號<>之間的所有東西。.*? 叫“非貪婪匹配”,意思是抓到第一個>就收手,免得把整行HTML都抓進來了。

8. 檢查文件是否為圖片

  • 正則: /.(jpg|jpeg|png|gif|bmp)$/i
  • 解釋: 以“.”開頭,后面跟著jpg或jpeg或png...這些東西,并且忽略大小寫。| 就是“或者”的意思。

9. 獲取字符串中的所有數字

  • 正則: /\d+/g
  • 解釋: 匹配所有“一串或多串數字”。最后的 g 是“全局匹配”(global),不然只找到第一個就停了。

10. 去除字符串首尾的空白

  • 正則: /^\s*|\s*$/g
  • 解釋: 匹配開頭(^)的零個或多個空白(\s*),或者(|)匹配結尾($)的零個或多個空白。全局替換成空字符串就行了。(當然,現在我們都用.trim()方法了,這個主要是用來理解正則)。

好了,10個最常用的“套路”講完了。

正則這東西, 我的建議是,在一些在線的正則測試網站(比如 regex101.com?),把你的字符串和表達式貼上去,它會一步步給你解釋,特別直觀。

反正我現在看到正則,心里不那么慌了。希望你也是,謝謝大家??。


該文章在 2025/7/7 11:20:42 編輯過
關鍵字查詢
相關文章
正在查詢...
點晴ERP是一款針對中小制造業的專業生產管理軟件系統,系統成熟度和易用性得到了國內大量中小企業的青睞。
點晴PMS碼頭管理系統主要針對港口碼頭集裝箱與散貨日常運作、調度、堆場、車隊、財務費用、相關報表等業務管理,結合碼頭的業務特點,圍繞調度、堆場作業而開發的。集技術的先進性、管理的有效性于一體,是物流碼頭及其他港口類企業的高效ERP管理信息系統。
點晴WMS倉儲管理系統提供了貨物產品管理,銷售管理,采購管理,倉儲管理,倉庫管理,保質期管理,貨位管理,庫位管理,生產管理,WMS管理系統,標簽打印,條形碼,二維碼管理,批號管理軟件。
點晴免費OA是一款軟件和通用服務都免費,不限功能、不限時間、不限用戶的免費OA協同辦公管理系統。
Copyright 2010-2025 ClickSun All Rights Reserved