1. 程式人生 > >正則表示式(regular expression)

正則表示式(regular expression)

正則表示式

什麼是正則表示式?

正則表示式:用於匹配規律規則的表示式,是對字串操作的一種邏輯公式,就是用事先定義好的一些特定的字元、及這些特定字元的組合,組成一個“規則字串”,用來表達對字串的一種過濾邏輯。

正則表示式的作用

  1. 匹配:給特定的字串作是否符合正則表示式的過濾邏輯。
  2. 提取:通過正則,獲取字串中特定部分。
  3. 替換:強大的字串替換能力。

正則表示式的特點

  • 靈活性,邏輯性和功能性非常強
  • 可以迅速用簡單的方式達到字串的複雜控制
  • 對於剛接觸的人來說,有點難懂

正則表示式的組成

  • 普通字元
  • 特殊字元(元字元):正則表示式中有特殊意義的字元

元字元

常用元字元

常用元字元

限定符

限定符

簡單演示說明

常用元字元
    *  .  表示的是:除了\n以外的任意的一個字元  
    * [] 表示的是:範圍
    * [0-9] 表示的是0到9之間的任意的一個數字,  
    * [a-z] 表示的是:所有的小寫的字母中的任意的一個
    * [A-Z] 表示的是:所有的大寫的字母中的任意的一個
    * [a-zA-Z] 表示的是:所有的字母的任意的一個
    * [0-9a-zA-Z] 表示的是: 所有的數字或者是字母中的一個
    * [] 另一個函式: 把正則表示式中元字元的意義幹掉    [.] 就是一個.
    * | 或者     [0-9]|[a-z] 表示的是要麼是一個數字,要麼是一個小寫的字母
    * () 分組 提升優先順序   [0-9]|([a-z])|[A-Z]
    * ([0-9])([1-9])([a-z]) 三組, 從最左邊開始計算
限定符
    *    *   表示的是:前面的表示式出現了0次到多次
             [a-z][0-9]* 小寫字母中的任意一個 後面是要麼是沒有數字的,要麼是多個數字的
    *    +  表示的是:前面的表示式出現了1次到多次
             [a-z][9]+  小寫字母一個後面最少一個9,或者多個9
    *    ?  表示的是:前面的表示式出現了0次到1次,最少是0次,最多1次 ,另一個含義:阻止貪婪模式
             [9][a-z]? "12312349ij"
    *  限定符:限定前面的表示式出現的次數
    *  {} 更加的明確前面的表示式出現的次數
    *  {0,} 表示的是前面的表示式出現了0次到多次,和 *一樣
    *  {1,} 表示的是前面的表示式出現了1次到多次,和 +一樣
    *  {0,1} 表示的是前面的表示式出現了0次到1次,和 ?一樣
    *  {5,10} 表示的是前面的表示式出現了5次到10次
    *  {4} 前面的表示式出現了4次
    *  {,10} 錯誤的========不能這麼寫
    *  ^ 表示的是以什麼開始,或者是取非(取反) ^[0-9] 以數字開頭
          ^[a-z] 以小寫字母開始
          [^0-9] 取反,非數字
    *  $ 表示的是以什麼結束   
           [0-9][a-z]$  必須以小寫字母結束
    *   \d 數字中的任意一個,
    *   \D 非數字中的一個
    *   \s 空白符中的一個
    *   \S 非空白符
    *   \w 非特殊符號
    *   \W 特殊符號
    *   \b 單詞的邊界


 

正則表示式運算優先順序

使用正則表示式

建立正則物件

方法一
var reg = new Regex('\d', 'i');
var reg = new Regex('\d', 'gi');
方法二
var reg = /\d/i;
var reg = /\d/gi;

引數

正則匹配

console.log(/./.test("除了回車換行以為的任意字元"));//true

console.log(/.*/.test("0個到多個"));//true

console.log(/.+/.test("1個到多個"));//true

console.log(/.?/.test("哈哈"));//true

console.log(/[0-9]/.test("9527"));//true

console.log(/[a-z]/.test("what"));//true

console.log(/[A-Z]/.test("Are"));//true

console.log(/[a-zA-Z]/.test("幹啥"));//false

console.log(/[0-9a-zA-Z]/.test("9ebg"));//true

console.log(/b|(ara)/.test("abra"));//true

console.log(/[a-z]{2,3}/.test("arfsf"));//true

正則提取(分組)

//  提取日期中的年部分  2015-5-10
var dateStr = '2016-1-5';
// 正則表示式中的()作為分組來使用,獲取分組匹配到的結果用.$1 $2 $3....來獲取
var reg = /(\d{4})-\d{1,2}-\d{1,2}/;
if (reg.test(dateStr)) {
  console.log(RegExp.$1);
}

正則替換

// 1. 替換所有空白
var str = "   123AD  asadf   asadfasf  adf ";
str = str.replace(/\s/g,"xx");
console.log(str);

// 2. 替換所有,|,
var str = "abc,efg,123,abc,123,a";
str = str.replace(/,|,/g, ".");
console.log(str);

常用正則

正則表示式線上工具

相關推薦

表示式Regular Expression基本語法

一、簡介 為什麼需要正則表示式? 文字的複雜處理 正則表示式的優勢和用途? 一種強大而靈活的文字處理工具; 大部分程式語言、資料庫、文字編輯器、開發環境都支援正則表示式。 正則表示式定義: 正如它的名字一樣,是描述了一個規則,通過這個規則可以匹配一

表示式regular expression

正則表示式 什麼是正則表示式? 正則表示式:用於匹配規律規則的表示式,是對字串操作的一種邏輯公式,就是用事先定義好的一些特定的字元、及這些特定字元的組合,組成一個“規則字串”,用來表達對字串的一種過

萬用字元WildCard表示式Regular Expression

1.萬用字元(wildcard)就是萬用牌的意思   * 表示匹配任意長度的任意字元   ? 表示匹配一個任意字元   […]則表示匹配括號中列出的字元中的任意一個   [!..]表示不

表示式Regular Expression高階使用文字編輯器,資料庫,Java

一、開發環境和文字編輯器中使用正則表示式 eclipse Notepad++ EditPlus UltraEdit 二、資料庫中也可以使用正則表示式 Mysq15.5以上 Oracle10g以上 例如: SELECT prod_name

[Swift]LeetCode10. 表示式匹配 | Regular Expression Matching

Given an input string (s) and a pattern (p), implement regular expression matching with support for '.' and '*'. '.' Matches any single cha

C++11新特性(74)-表示式庫(regular-expression library)

正則表示式(regular expression)是一種描述字元序列的方法,從C++11起,C++正則表示式庫(regular-expression library)成為新標準庫的一部分。 由於正則表示式本身就是一個非常龐大的系統,本文只介紹C++中使用正則表示式的小例子,淺嘗輒止。 基

【轉】Python之表示式re模組

【轉】Python之正則表示式(re模組) 本節內容 re模組介紹 使用re模組的步驟 re模組簡單應用示例 關於匹配物件的說明 說說正則表示式字串前的r字首 re模組綜合應用例項 參考文件 提示: 由於該站對MARKDOWN的表格支援的不是很好,所以本文中的表

LINUX學習—grep和表示式LINUX三劍客

grep, egrep, fgrep grep(GLOBAL RESEARCH) 是一種強大的文字搜尋工具,它能使用正則表示式搜尋文字,並把匹配的行打印出來。根據模式,搜尋文字,並將符合模式的文字行顯示出來。只能使用基本正則表示式 要使用擴充套件正則表示式需要-E pattern

表示式re模組

正則表示式,用來處理什麼的呢?它有什麼作用? 正則表示式是用來處理字串匹配的!   講正題之前我們先來看一個例子::https://reg.jd.com/reg/person?ReturnUrl=https%3A//www.jd.com/ 這是京東的註冊頁面,開啟頁面我們就看到這些要求輸入個

【LeetCode】#10表示式匹配(Regular Expression Matching)

【LeetCode】#10正則表示式匹配(Regular Expression Matching) 題目描述 給定一個字串 (s) 和一個字元模式 §。實現支援 ‘.’ 和 ‘’ 的正則表示式匹配。 ‘.’ 匹配任意單個字元。 '’ 匹配零個或多個前面的元素。 匹配應該覆蓋整個字串

常用的表示式匹配數字

正則表示式用於字串處理、表單驗證等場合,實用高效。現將一些常用的表示式收集於此,以備不時之需。 匹配中文字元的正則表示式: [\u4e00-\u9fa5] 評註:匹配中文還真是個頭疼的事,有了這個表示式就好辦了 匹配雙位元組字元(包括漢字在內):[^\x00-\xff]

表示式十五——統計程式碼中的程式碼行、註釋行和空白行

package com.wy.regular; import java.io.BufferedReader; import java.io.File; import java.io.FileNotFo

表示式十七——不捕獲分組

package com.wy.regular; import java.util.regex.Matcher; import java.util.regex.Pattern; public clas

表示式十八——向前引用

package com.wy.regular; import java.util.regex.Matcher; import java.util.regex.Pattern; public clas

表示式十二——字串的替換

1、查詢字串中的字串 package com.wy.regular; import java.util.regex.Matcher; import java.util.regex.Pattern;

python中的表示式re模組

一、簡介 正則表示式本身是一種小型的、高度專業化的程式語言,而在python中,通過內嵌整合re模組,程式媛們可以直接呼叫來實現正則匹配。正則表示式模式被編譯成一系列的位元組碼,然後由用C編寫的匹配引擎執行。 二、正則表示式中常用的字元含義 1、普通字元和11個元字

JS表示式火星文

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>正則表示式(火星文)</title> </head>

表示式基礎2

從左到右進行計算,並遵循優先順序順序,這與算術表示式非常類似。 相同優先順序的從左到右進行運算,不同優先順序的運算先高後低。下表從最高到最低說明了各種正則表示式運算子的優先順序順序: 運算子 描述 \ 轉義符 (), (?:), (?=), []

[轉]python中的表示式re模組

轉自:https://www.cnblogs.com/tina-python/p/5508402.html 一、簡介 正則表示式本身是一種小型的、高度專業化的程式語言,而在python中,通過內嵌整合re模組,程式媛們可以直接呼叫來實現正則匹配。正則表示式模式被編譯成一系列的位元組碼

15/18位身份證號碼表示式詳細版

xxxxxx yyyy MM dd 375 0     十八位 xxxxxx    yy MM dd   75 0     十五位 地區:[1-9]\d{5} 年的前兩位:(18|19|([23]\