1. 程式人生 > >前端學習之正則表示式

前端學習之正則表示式

正則表示式,又稱規則表示式,英語名稱:Regular Expression,在程式碼中常簡寫為regex、regexp或RE。是對字串操作的一種邏輯公式。

正則表示式主要有3個用處:

1、替換文字,可以在文件中使用一個正則表示式來標識特定文字,然後可以全部將其刪除,或者替換為別的文字 。例如遮蔽一些罵人的特定文字等。

2、提取字串中的某些特定字串。

3、測試字串的某個模式。例如,輸入使用者名稱、密碼、電話號碼等資料時,對其檢測,看是否符合輸入要求。這稱為資料有效性驗證 。

正則表示式語法:普通字串與特殊字串(稱為元字元)組成的文字模式。該模式描述在查詢文字主體時待匹配的一個或多個字串。正則表示式作為一個模板,將某個字元模式與所搜尋的字串進行匹配。 

var reg=new RegExp(pattern, attributes)或者var reg=/pattern/      //RegExp是一個物件,就像陣列一樣。現在建立一個最基本的正則表示式:

var reg=new RegExp("a")//匹配字母a;var reg=new RegExp("a","i")//第二個引數,表示匹配時不分大小寫 ;

attributes為可選字串,包含屬性"g"、"i" 和 "m",分別用於指定全域性匹配、區分大小寫的匹配和多行匹配.

正則方法:search\match\test\replace

search:檢索與正則表示式相匹配的值。返回找到第一個匹配值的位置,如果沒有找到,則返回-1;

語法:stringObj.search(rgExp) stringObj 必選項 rgExp正則表示式

match:找到一個或多個正則表示式的匹配。使用正則表示式模式對字串執行查詢,並將包含查詢的結果作為陣列返回。

語法:stringObj.match(rgExp)  stringObj-必選項。對其進行查詢的 String 物件或字串文字。

        rgExp-必選項。為包含正則表示式模式和可用標誌的正則表示式物件。

replace:替換與正則表示式匹配的子串。

語法:stringObj.replace(rgExp, replaceText)  stringObj-字串(string),reExp可以是正則表示式物件(RegExp)也可以是字串(string),replaceText是替代查詢到的字串。。

test:該方法常用於判斷使用者輸入資料的合法性

該方法的返回值是布林值,通過該值可以匹配字串中是否存在於正則表示式相匹配的結果,如果有匹配內容,返回ture,如果沒有匹配內容返回false,該方法常用於判斷使用者輸入資料的合法性,比如檢驗Email的合法性;

基本語法:objReg.test(objStr)      objReg 必選項 RegExp物件名稱      objStr 要進行匹配檢測的字串 

元字元:

.   :查詢單個字元,除了換行和行結束符。

\w:查詢單詞字元數字、字母、下劃線。

\d:查詢數字。

\s:查詢空白字元。

\b:匹配單詞邊界

\n:查詢換行符

方括號:

[abc]   :查詢方括號之間的任何字元。

[^abc]:查詢任何不在方括號之間的字元。

[0-9]:查詢任何從 0 至 9 的數字。

[a-z]:查詢任何從小寫 a 到小寫 z 的字元。

[A-z]:查詢任何從大寫 A 到小寫 z 的字元。

量詞:

n+  :匹配任何包含至少一個 n 的字串。+多次匹配

n*:匹配任何包含零個或多個 n 的字串。

n?:匹配任何包含零個或一個 n 的字串。

n{X}:匹配包含 X 個 n 的序列的字串。

n{X,Y}:匹配包含 X 或 Y 個 n 的序列的字串。

n$:匹配任何結尾為 n 的字串。

^n:匹配任何開頭為 n 的字串。

括號:

正則表示式的() [] {}有不同的意思。

() 是為了提取匹配的字串。表示式中有幾個()就有幾個相應的匹配字串。

(\s*)表示連續空格的字串。

[]是定義匹配的字元範圍。比如 [a-zA-Z0-9] 表示相應位置的字元要匹配英文字元和數字。[\s*]表示空格或者*號。

{}一般用來表示匹配的長度,比如 \s{3} 表示匹配三個空格,\s[1,3]表示匹配一到三個空格。 

(0-9) 匹配 '0-9′ 本身。 [0-9]* 匹配數字(注意後面有 *,可以為空)[0-9]+ 匹配數字(注意後面有 +,不可以為空){1-9} 寫法錯誤。

[0-9]{0,9} 表示長度為 0 到 9 的數字字串。

下面記錄了一些常用的正則表示式:

使用者名稱 /^[a-z0-9_-]{3,16}$/

密碼   /^[a-z0-9_-]{6,18}$/

[email protected]

電子郵箱   /^([a-z0-9_\.-]+)@([\da-z\.-]+)\.([a-z\.]{2,6})$/

/^[a-z\d]+(\.[a-z\d]+)*@([\da-z](-[\da-z])?)+(\.{1,2}[a-z]+)+$/

URL /^(https?:\/\/)?([\da-z\.-]+)\.([a-z\.]{2,6})([\/\w \.-]*)*\/?$/

IP 地址 /((2[0-4]\d|25[0-5]|[01]?\d\d?)\.){3}(2[0-4]\d|25[0-5]|[01]?\d\d?)/

/^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/

HTML 標籤 /^<([a-z]+)([^<]+)*(?:>(.*)<\/\1>|\s+\/>)$/

刪除程式碼\\註釋 (?<!http:|\S)//.*$

Unicode編碼中的漢字範圍 /^[\u2E80-\u9FFF]+$/

“^\d+$"  //非負整數(正整數 + 0)

"^[0-9]*[1-9][0-9]*$"  //正整數

"^((-\d+)|(0+))$"  //非正整數(負整數 + 0)

"^-[0-9]*[1-9][0-9]*$"  //負整數

"^-?\\d+$"    //整數

"^\\d+(\\.\\d+)?$"  //非負浮點數(正浮點數 + 0)

"^(([0-9]+\\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\\.[0-9]+)|([0-9]*[1-9][0-9]*))$"

//正浮點數

"^((-\\d+(\\.\\d+)?)|(0+(\\.0+)?))$"  //非正浮點數(負浮點數 + 0)

"^(-(([0-9]+\\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\\.[0-9]+)|([0-9]*[1-9][0-9]*)))$"

//負浮點數

"^(-?\\d+)(\\.\\d+)?$"  //浮點數

"^[A-Za-z]+$"  //由26個英文字母組成的字串

"^[A-Z]+$"  //由26個英文字母的大寫組成的字串

"^[a-z]+$"  //由26個英文字母的小寫組成的字串

"^[A-Za-z0-9]+$"  //由數字和26個英文字母組成的字串

"^\\w+$"  //由數字、26個英文字母或者下劃線組成的字串

"^[\\w-]+(\\.[\\w-]+)*@[\\w-]+(\\.[\\w-]+)+$"    //email地址

"^[a-zA-z]+://(\\w+(-\\w+)*)(\\.(\\w+(-\\w+)*))*(\\?\\S*)?$"  //url

"^[A-Za-z0-9_]*$"。

東西太多記不住啊 啊啊啊啊啊。。。

詳細內容請看https://www.jianshu.com/p/a8ce5341094c