正則表達式——html


1 正則表達式

正則表達式(英語:Regular Expression,在代碼中常簡寫為regexregexpRE)使用單個字符串來描述、匹配一系列符合某個句法規則的字符串搜索模式。

 

搜索模式可用於文本搜索和文本替換。

 

什么是正則表達式?

正則表達式是由一個字符序列形成的搜索模式。

 

當你在文本中搜索數據時,你可以用搜索模式來描述你要查詢的內容。

 

正則表達式可以是一個簡單的字符,或一個更復雜的模式。

 

正則表達式可用於所有文本搜索和文本替換的操作。

 

應用:表單的檢驗,文本搜索,爬取數據

 

語法

/正則表達式主體/修飾符(可選)

其中修飾符是可選的。

 

 

實例:

var patt = /sxt/i

 

實例解析:

 

/sxt/i  是一個正則表達式。

 

sxt  是一個正則表達式主體 (用於檢索)

 

i  是一個修飾符 (搜索不區分大小寫)

 

使用字符串方法

JavaScript 中,正則表達式通常用於兩個字符串方法 : search() replace()

 

search() 方法 用於檢索字符串中指定的子字符串,或檢索與正則表達式相匹配的子字符串,並返回子串的起始位置。

 

replace() 方法 用於在字符串中用一些字符替換另一些字符,或替換一個與正則表達式匹配的子串。

 

search() 方法使用正則表達式

實例

使用正則表達式搜索 "Runoob" 字符串,且不區分大小寫:

var str = "Visit Runoob!";

var n = str.search(/Runoob/i);

輸出結果為:6

 

search() 方法使用字符串

search 方法可使用字符串作為參數。字符串參數會轉換為正則表達式:

 

實例

檢索字符串中 "Runoob" 的子串:

var str = "Visit sxt!";

var n = str.search("sxt");

 

replace() 方法使用正則表達式

實例

使用正則表達式且不區分大小寫將字符串中的 Microsoft 替換為 sxt :

var str = document.getElementById("demo").innerHTML;

var txt = str.replace(/microsoft/i,"sxt");

結果輸出為:

 

Visit Runoob!

 

 

replace() 方法使用字符串

replace() 方法將接收字符串作為參數:

var str = document.getElementById("demo").innerHTML;

var txt = str.replace("Microsoft","Runoob");

 

注意:

 

正則表達式參數可用在以上方法中 (替代字符串參數)

正則表達式使得搜索功能更加強大(如實例中不區分大小寫)

 

正則表達式基礎知識

正則表達式修飾符

修飾符 可以在全局搜索中不區分大小寫:

 

修飾符 描述

i 執行對大小寫不敏感的匹配。

g 執行全局匹配(查找所有匹配而非在找到第一個匹配后停止)。

m 執行多行匹配。

 

正則表達式模式

方括號用於查找某個范圍內的字符:

 

表達式 描述

[abc] 查找方括號之間的任何字符。

[0-9] 查找任何從 0 9 的數字。

(x|y) 查找任何以 | 分隔的選項。

元字符是擁有特殊含義的字符:

 

元字符 描述

. 匹配除\n”之外的任何單個字符。但是一般語言如果是多行都會自動將.可以匹配\n

^ 匹配輸入字符串的開始位置。如果設置了RegExp對象的Multiline屬性,^也匹配“\n”或“\r”之后的位置。

$ 匹配輸入字符串的結束位置。如果設置了RegExp對象的Multiline屬性,$也匹配“\n”或“\r”之前的位置。

\d 查找數字。

\s 查找空白字符。

\S 匹配任何非空白字符。等價於[^ \f\n\r\t\v]

\b 匹配單詞邊界。

\w 匹配包括下划線的任何單詞字符。等價於[A-Za-z0-9_]”。

\W 匹配任何非單詞字符。等價於[^A-Za-z0-9_]”。

\d 匹配一個數字字符。等價於[0-9]

\D 匹配一個非數字字符。等價於[^0-9]

\b 匹配一個單詞邊界,也就是指單詞和空格間的位置。例如,er\b”可以匹配“never”中的“er”,但不能匹配“verb”中的“er”。

\B 匹配非單詞邊界。er\B”能匹配“verb”中的“er”,但不能匹配“never”中的“er”。

量詞

 

量詞 描述

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

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

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

? 當該字符緊跟在任何一個其他限制符(*,+,?{n}{n,}{n,m})后面時,匹配模式是非貪婪的。非貪婪模式盡可能少的匹配所搜索的字符串

N{11} 匹配任何包含11N的字符串

{n} n是一個非負整數。匹配確定的n次。例如,“o{2}”不能匹配“Bob”中的“o”,但是能匹配“food”中的兩個o

{n,} n是一個非負整數。至少匹配n次。例如,“o{2,}”不能匹配“Bob”中的“o”,但能匹配“foooood”中的所有o“o{1,}”等價於“o+”“o{0,}”則等價於“o*”

{n,m} mn均為非負整數,其中n<=m。最少匹配n次且最多匹配m次。例如,“o{1,3}”將匹配“fooooood”中的前三個o“o{0,1}”等價於“o?”。請注意在逗號和兩個數之間不能有空格。

 

(pattern) 匹配pattern並獲取這一匹配。

 

使用 RegExp 對象

JavaScript 中,RegExp 對象是一個預定義了屬性和方法的正則表達式對象。

 

test()

test() 方法是一個正則表達式方法。

 

test() 方法用於檢測一個字符串是否匹配某個模式,如果字符串中含有匹配的文本,則返回 true,否則返回 false

 

以下實例用於搜索字符串中的字符 "e"

 

實例

var patt = /e/;

patt.test("The best things in life are free!");

 

 

字符串中含有 "e",所以該實例輸出為:true

 

你可以不用設置正則表達式的變量,以上兩行代碼可以合並為一行:

/e/.test("The best things in life are free!")

 

使用 exec()

exec() 方法是一個正則表達式方法。

 

exec() 方法用於檢索字符串中的正則表達式的匹配。

 

該函數返回一個數組,其中存放匹配的結果。如果未找到匹配,則返回值為 null

 

以下實例用於搜索字符串中的字母 "e":

 

Example 1

/e/.exec("The best things in life are free!");

字符串中含有 "e",所以該實例輸出為:e

 

 

一、校驗數字的表達式

1. 數字:    ^[0-9]*$

2. n位的數字:^\d{n}$

3. 至少n位的數字:^\d{n,}$

4. m-n位的數字:^\d{m,n}$

  1. 零和非零開頭的數字:^([0-9]*)$

 

二、校驗字符的表達式

1. 漢字:^[\u4e00-\u9fa5]{0,}$

2. 英文和數字:^[A-Za-z0-9]+$

3. 長度為3-20的所有字符:^.{3,20}$

4. 26個英文字母組成的字符串:^[A-Za-z]+$

 

三、特殊需求表達式

1.域名:[a-zA-Z0-9][-a-zA-Z0-9]{0,62}(\.[a-zA-Z0-9][-a-zA-Z0-9]{0,62})+\..*

2. InternetURL[a-zA-z]+://[^\s]*

3.帳號是否合法(字母開頭,允許5-16字節,允許字母數字下划線)^[a-zA-Z][a-zA-Z0-9_]{4,15}$

4.騰訊QQ號:[1-9][0-9]{4,} (騰訊QQ號從10000開始)

5. IP地址:\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3} (提取IP地址時有用)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM