199,一個被正則表達式遺忘的號碼段?

来源:https://www.cnblogs.com/loober/archive/2019/01/22/10306296.html
-Advertisement-
Play Games

前不久換手機號,東想西想,最後選了個電信的199號碼段。這下好了,當我註冊某些網站的賬號時,彈出個非法號碼欄位,驚了!怎麼回事??? 於是想到:當我們註冊某網站的時候,需要輸入手機號進行註冊。比如唯品會的註冊界面,當你輸入的手機號不對時就會出現錯誤提示:請輸入正確的手機號碼。 這個是怎麼實現的呢?比 ...


前不久換手機號,東想西想,最後選了個電信的199號碼段。這下好了,當我註冊某些網站的賬號時,彈出個非法號碼欄位,驚了!怎麼回事???

於是想到:當我們註冊某網站的時候,需要輸入手機號進行註冊。比如唯品會的註冊界面,當你輸入的手機號不對時就會出現錯誤提示:請輸入正確的手機號碼

 

這個是怎麼實現的呢?比如我那個199開頭的電信號,總是被誤認為非法號碼。究其原因,原來是正則表達式搞的鬼。

首先瞭解一下什麼是正則表達式?打開百度百科,它的解釋如下:

所以,在程式設計上,正則表達式通常用於匹配字元串,一般是匹配有規律的字元串,多數用於表單驗證。比如註冊網站時,我們常常需要按要求填寫的那些賬號密碼信息等。

正則表達式怎麼寫出來的,首先讓我們看看正則表達式是什麼樣子的?

幾個常見的正則表達式
功能實現 正則表達式
Email地址 ^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$
功能變數名稱 [a-zA-Z0-9][-a-zA-Z0-9]{0,62}(/.[a-zA-Z0-9][-a-zA-Z0-9]{0,62})+/.?
身份證號 ^\d{15}|\d{18}$
帳號是否合法 ^[a-zA-Z][a-zA-Z0-9_]{5,15}$

坐好了,準備發車!接下來看看正則表達式是怎麼寫的?這些字元代表什麼意思?以及手機號的正則表達式是怎樣的?

正則表達式-特殊字元
. 表示除了換行之外的所有單個字元 \w 表示匹配數字,字母,下劃線[A-Z0-9a-z _]
* 表示匹配任意多次可以是0,一般結合其它字元使用 \W 表示匹配非數字,非字母,非下劃線[^A-Z0-9a- z_]
[] 表示範圍 \d 表示數字[0-9]
^ 表示非 \D 表示非數字[^0-9]
+ 表示至少出現一次 {n,} 至少匹配n次,{n}:表示匹配n次,{n,m}:表示最少n次,最多m次
正則表達式-錨元字元
/^ 從頭匹配
$/ 從尾部匹配
\b 匹配邊界
\s 匹配空格
正則表達式-選擇字元
| 或者的意思
() 表示分組

那麼常用的手機號的正則表達式是怎樣的?

首先得瞭解一下三大運營商的各號碼段如何:

於是滿足所有條件的手機號碼的正則表達式誕生了:

/^1([358][0-9]|4[579]|66|7[0135678]|9[89])\d{8}$/

 


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

-Advertisement-
Play Games
更多相關文章
  • 在事務語句最前面加上 set xact_abort on 當xact_abort選項為on時,SQL Server在遇到錯誤時會終止執行並rollback整個事務。 ...
  • 下載Navicat Premium 12和破解補丁Navicat_Keygen_Patch,底部有下載地址。下載之後安裝Navicat,安裝成功後先不要打開,然後打開破解補丁,破解補丁不需要安裝,雙擊運行,點擊path選擇Navicat安裝目錄下的navicat.exe。 第二步打開Navicat點 ...
  • 1、前言 最近在項目中使用到Redis做緩存,方便多個業務進程之間共用數據。由於Redis的數據都存放在記憶體中,如果沒有配置持久化,redis重啟後數據就全丟失了,於是需要開啟redis的持久化功能,將數據保存到磁碟上,當redis重啟後,可以從磁碟中恢複數據。redis提供兩種方式進行持久化,一種 ...
  • NSString *filePath = [documentsDirectory stringByAppendingPathComponent:@"xxx.txt"]; https://www.cnblogs.com/FBiOSBlog/p/5819418.html https://blog.csd ...
  • 一、概述 本次分析是基於android7.0的源碼,主要是介紹如何通過反射來打開藍牙的網路共用以及互聯網的連接。 二、藍牙的網路共用 1. 網路共用部分源碼分析 關於packages/apps/Settings/src/com/android/settings/TetherSettings.java ...
  • NSString* str=@"hello";//存在代碼區,不可變 NSLog(@"%@",str); //1.【字元串插入】 NSMutableString* str1=[[NSMutableStringalloc]initWithString:@"hello"];//存在堆區,可變字元串 NS... ...
  • image與video在Quill formats中屬於Embeds,要在富文本中插入圖片或者視頻需要使用insertEmbed api。 insertEmbed 插入圖片需要位置,內容類型以及圖片的url: 獲取位置: 上傳圖片 首先toolbar中添加image,還需要一個隱藏input元素用來 ...
  • [TOC] 1. CSS盒模型 元素的尺寸 1.1 元素的尺寸 | 屬性 | 值 | 說明 | | | | | | width | auto、長度值或百分比 | 元素的寬度 | | height | auto、長度值或百分比 | 元素的高度 | | min width | auto、長度值或百分比 ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...