正則小結

来源:http://www.cnblogs.com/supershare/archive/2016/12/24/6217166.html
-Advertisement-
Play Games

1、元字元 [擁有特殊含義的元字元] \d -> 匹配一個0-9的數字,相當於[0-9],和它相反的是\D ->匹配一個除了0-9的任意字元 \w -> 匹配一個0-9、a-z、A-Z、_的數字或字元,相當於[0-9a-zA-Z_] \s -> 匹配一個空白字元(空格、製表符...) \b -> 匹 ...


1、元字元
[擁有特殊含義的元字元]
\d -> 匹配一個0-9的數字,相當於[0-9],和它相反的是\D ->匹配一個除了0-9的任意字元
\w -> 匹配一個0-9、a-z、A-Z、_的數字或字元,相當於[0-9a-zA-Z_]
\s -> 匹配一個空白字元(空格、製表符...)
\b -> 匹配一個單詞的邊界
\t -> 匹配一個製表符
\n -> 匹配一個換行
. -> 匹配一個除了\n以外的任意字元
^ -> 以某一個元字元開頭
$ -> 以某一個元字元結尾
\ -> 轉移字元
x|y -> x或者y的一個
[xyz] -> x、y、z中的任意一個
[^xyz] -> 除了xyz中的任意一個字元
[a-z] -> 匹配a-z中的任意一個字元
[^a-z] -> 匹配除了a-z中的任意一個字元
() -> 正則中的分組

註意:
1)關於[]
a、[+] ->中括弧中出現的所有字元都代表的是本身的意思
b、[12-65] ->這個不是12-65而是1/2-6/5三者中的一個

2)關於()
a、分組的作用是改變預設的優先順序,例如:/^18|19$/,181、189、119、819、1819...都符合,而不是我們認為的18或19,但是改成/^(18|19)$/就是單純的18或19了
b、可以在捕獲大正則匹配的內容同時,把分組匹配的內容也進行捕獲->分組捕獲
c、分組引用,例如:/^(\d)(\w)\2\1$/,這裡的\2是和第二個分組出現一模樣的內容,\1是和第一個分組出現一模一樣的內容,例如:"0aa0"就符合了


[代表數量的量詞元字元]
* -> 0到多個
+ -> 1到多個
? -> 0到1個
{n} -> 出現n次
{n,} -> 出現n到多次
{n,m} -> 出現n到m次

註意:
1)關於?的幾種情況
a、放在非量詞元字元後面,代表出現0-1次
b、放在量詞元字元後面,代表取消捕獲時候的貪婪性,例如:reg=/\d+/; reg.exec("2015") -> "2015" 但是如果正則這樣寫 reg=/\d+?/; reg.exec("2015") -> "2"
c、在分組開頭加?:,代表當前的分組只是匹配不進行捕獲,例如:/^(?:\d+)$/
d、在分組開頭加?=,正向預查,例如:/^abcdef(?=1|2)$/ 只有"abcdef1"和"abcdef2"才符合
e、在分組開頭加?!,負向預查,例如:/^abcdef(?!1|2)$/ 除了"abcdef1"和"abcdef2"不符合,其他的只要是"abcdef(任何的東西)"都符合

[代表本身意思的元字元]
除了以上的,在字面量方式中,我們出現的其他任意字元代表的都是自己本身的意思
var num=12;
var reg=/^\w"+num+"$/; ->這裡"+num+"不是把變數的值拼接,而這裡的不管是"還是+都是元字元
->對於需要拼接字元串和變數的方式我們只能使用實例方式創建正則

2、修飾符
i -> ignoreCase 忽略字母的大小寫
g -> global 全局匹配 (加上g可以解決正則捕獲時候的懶惰性)
m -> multiline 多行匹配

3、項目中常用的正則
1)有效數字的
var reg=/^[+-]?(\d|([1-9]\d+))(\.\d+)?$/;

2)郵箱的
var reg = /^\w+((-\w+)|(\.\w+))*@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$/;

3)電話的
var reg = /^1\d{10}$/;

4)年齡在18-65之間的
var reg = /^((18|19)|([2-5]\d)|(6[0-5]))$/;

5)中文姓名
var reg = /^[\u4e00-\u9fa5]{2,4}$/;

6)身份證
var reg = /^(\d{6})(\d{4})(\d{2})(\d{2})(?:\d{2})(\d)(?:\d|X)$/;
//-> 12828(省市縣) 1990(年) 12(月) 04(日) 06 1(奇數是男偶數是女) 7(數字或者X)

4、正則的匹配
reg.test([string]) ->true就是匹配成功 false->匹配不成功

5、正則的捕獲
1)reg.exec([string])
-> 首先去匹配,匹配成功在捕獲,返回的是一個數組; 如果匹配不成功返回的是null;
-> 正則的捕獲即懶惰又貪婪
-> 解決懶惰性 在正則的末尾增加全局修飾符g
-> 解決貪婪性 在量詞後面加?


後續還有*********************************************

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

-Advertisement-
Play Games
更多相關文章
  • border-radius 圓角 參數可為像素 也可為百分比 當一個參數時 作用範圍為四個角 當兩個參數時 作用範圍為 左上右下 右上左下 當三個參數時 作用範圍為 左上 右上左下 右下 當四個參數時 作用範圍為 左上 右上 右下 左下 當參數中有'/'時 例如 100px/150px 則表示:X軸 ...
  • JavaScript中數據類型轉換總結 在js中,數據類型轉換分為顯式數據類型轉換和隱式數據類型轉換。 1, 顯式數據類型轉換 a:轉數字: 1)Number轉換: 代碼: var a = “123”; a = Number(a); 註意: a)如果轉換的內容本身就是一個數值類型的字元串,那麼將來在 ...
  • ▓▓▓▓▓▓ 大致介紹 下午看到了一個送聖誕禮物的小動畫,正好要快到聖誕節了,就動手模仿並改進了一些小問題 原地址:花式輪播 聖誕禮物傳送 思路:動畫中一共有五個禮物,他們平均分佈在屏幕中,設置最外邊的兩個禮物旋轉一定的角度並隱藏,動畫開始,每個禮物向右移動一定的位置,然後再把第五個禮物添加到第一個 ...
  • Httpster 這個網站聚合了世界各地最新最潮的網頁設計案例,展示了創意的設計,精心的策劃,優秀的排版。這些作品都按月份和類別進行了很好劃分,你可以方便的找到自己感興趣的網站案例。 ...
  • 剛剛出來實習,之前實習的公司有一個分頁插件,和後端的數據字典約定好了的,基本上是看不到內部是怎麼實現的,新公司是做WPF的,好像對於ASP.NET的東西不多,導師扔了一個小系統給我和另一個同事,指了兩種框架的方案就讓我們自己做了。。。 剛開始在網上找了一下,覺得bootstrap-paginator ...
  • 使用jsonp實現跨域獲取數據。 js部分 在頁面中測試 結果可以返回結果,頁面顯示為,表示獲取成功! ...
  • <!doctype html> <html> <head> <title>CSS3logo</title> <style type="text/css"> html, body, div, img { margin: 0; padding: 0; } #box { position: absolut ...
  • web工程中如何將大量數據從伺服器端傳送到瀏覽器一直是很重要的一個問題。 其中一個解決方法是在伺服器端將將數據封裝成json格式,然後傳給前臺。廢話不多說,下麵講乾貨。 1.要用json必須下載一個庫和必須的依賴項。 2.導入到eclipse/myeclopseweb工程中web-inf/lib中。 ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...