在前端的開發中不多人會用到正則表達式(RegExp)去寫函數,其實正則表達式的效率會比通常的邏輯代碼要快不少,可是它也有一個特色就是不容易掌握。javascript
正則引擎主要能夠分爲兩大類:一種是DFA,一種是NFA。html
一個正常的正則表達式的語法應該是 前端
/正則表達式主體/修飾符
在字符串方面RegExp有兩個方法:java
search() 用於檢索字符串中指定的子字符串,或檢索與RegExp相匹配的子字符串並返回子串的起始2位置。正則表達式
replace() 用於字符串中一些字符替換另外一些字符,或替換一個與正則表達式相匹配的子串。數組
match() 方法可在字符串內檢索指定的值,或找到一個或多個正則表達式的匹配。函數
test() 方法用於檢測一個字符串是否匹配某個模式,若是字符串中含有匹配的文本,則返回 true,不然返回 false。工具
exec() 方法用於檢索字符串中的正則表達式的匹配。該函數返回一個數組,其中存放匹配的結果。若是未找到匹配,則返回值爲 null。編碼
建立方式局我瞭解的話有兩種:url
一、
var newregexp = new RegExp("//此處寫入表達式的式子","此處寫入g或i或gi或m,主要寫入是是否全局匹配");
二、
var newregexp = / 表達式 /gi
一些常見的標識符:
元字符:
\d 查找數字。 \s 查找空白字符。 \b 匹配單詞邊界。 \uxxxx 查找以十六進制數 xxxx 規定的 Unicode 字符。
表達式:
方括號用於查找某個範圍內的字符:
[abc] 查找方括號之間的任何字符。 [0-9] 查找任何從 0 至 9 的數字。 (x|y) 查找任何以 | 分隔的選項。
量詞:
n+ 匹配任何包含至少一個 n 的字符串。 n* 匹配任何包含零個或多個 n 的字符串。 n? 匹配任何包含零個或一個 n 的字符串。
如下部分都是引用的:
來源:https://www.cnblogs.com/jay3352/p/5784050.html
正則表達式的() [] {}有不一樣的意思。
() 是爲了提取匹配的字符串。表達式中有幾個()就有幾個相應的匹配字符串。
(\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}$/ acas12_aaa@sina.com.cn 電子郵箱 /^([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_]*$"。