前端學習之正則表示式
正則表示式,又稱規則表示式,英語名稱: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}$/
電子郵箱 /^([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