正規表示式

2021-09-02 19:29:13 字數 3531 閱讀 3002

在js中,string作為乙個很重要的物件,它的使用方法也很多。或者說伴隨著他的一些方法和函式也很多。在這裡主要說明正規表示式。以及一些中級的操作技巧。

正規表示式的定義:

正規表示式是一種方法。是一種定義字元模式的方法。簡單點而言就是當要檢索某個文字時,可以使用一種模式來描述要檢索的內容。

有了它之後,我們就可以更簡單的去拆分,查詢,替換字串中與模式字元匹配的字元。

需要說明的是,regexp是js中的內建物件,就像string和array。而在js中正規表示式的使用正好就是通過這個物件來使用的。

regexp物件的建立:

1:

var myregexp = /\b'|'\b/;

其中的/和/代表著正規表示式的開始和結束。就像引號表示字串的開始和結束一樣。

2:

var myregexp = new regexp ("\\b'|'\\b ")

這是兩種指定正規表示式的方法,第一種方法在js中更加簡潔高效。在日常的程式設計中一般使用第一種。

接下來是正規表示式的一些簡單的用法:

在string物件中,很多方法都把正規表示式當做引數,但是regexp作為乙個物件有它自己的方法和屬性。

在js中regexp通常被split();match();replace();search();作為引數。下面的例子是用replace方法和正規表示式實現的乙個簡單的文字替換。

var mystring = 'paul,puala,pauline,paul,paul';

var myregexp = /paul/;

mystring = mystring.replace(myregexp,'ringo');

console.log(mystring);

上述的程式是把paul換成ringo,replace()方法接受兩個引數第乙個是regexp引數用來查詢和替換的模式,另乙個是替換的文字。

注意:此時的執行結果是:ringo,puala,pauline,paul,paul

這是因為:regexp預設僅查詢與模式匹配的第乙個子字元。找到即停止。這一[b]特性[/b]非常重要。

因為這裡想要達到的目的是全域性查詢,全域性匹配。全域性替換。所以就來說明一下regexp這個物件。

語法:

/pattern/attributes

new regexp(pattern, attributes);

pattern 引數是乙個字串,指定了正規表示式的模式或其他正規表示式;

attributes是乙個可選的字元:包含屬性 "g"、"i" 和 "m",分別用於指定全域性匹配、區分大小寫的匹配和多行匹配。

正規表示式的元字元(擁有特殊含義的字元):

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

\w 查詢單詞字元。

\w 查詢非單詞字元。

\d 查詢數字。

\d 查詢非數字字元。

\s 查詢空白字元。

\s 查詢非空白字元。

\b 匹配單詞邊界。

\b 匹配非單詞邊界。

\0 查詢 nul 字元。

\n 查詢換行符。

\f 查詢換頁符。

\r 查詢回車符。

\t 查詢製表符。

\v 查詢垂直製表符。

\*** 查詢以八進位制數 *** 規定的字元。

\xdd 查詢以十六進製制數 dd 規定的字元。

\u***x 查詢以十六進製制數 ***x 規定的 unicode 字元。

需要注意的是大小寫。因為大小寫字元的含義大相徑庭!!!

下面是正規表示式的量詞:

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

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

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

n 匹配包含 x 個 n 的序列的字串。

n 匹配包含 x 至 y 個 n 的序列的字串。

n 匹配包含至少 x 個 n 的序列的字串。

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

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

?=n 匹配任何其後緊接指定字串 n 的字串。

?!n 匹配任何其後沒有緊接指定字串 n 的字串。

在日常使用中有下面的一些重複字元:

表示前一項出現n次

前一項出現n次或者n次以上。

前一項至少出現n次,最多出現m次

? 前一項出現0次或者1次

+ 前一項出現1次或者多次

× 前一項出現0次或者多次

還有一些方括號(用於查詢某個範圍內的字元):

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

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

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

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

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

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

[adgk] 查詢給定集合內的任何字元。

[^adgk] 查詢給定集合外的任何字元。

(red|blue|green) 查詢任何指定的選項。

還有一些常用的位置字元:

^ 模式必須位於字串的開頭,如果是多行字串,模式就位於一行的開頭,對於多行文字(既包含回車符的字串),在定義正規表示式的時候,需要用/myreg ex/m設定多行標記。

$ 模式必須位於字串的結束位置,如果是多行字串,模式就位於一行的結束位置,對於多行文字(即包含回車符的字串,)在定義正規表示式的時候,需要使用/myreg ex/m設定多行標記。

\b 匹配單詞分界位置。即單詞字元與非單詞字元之間的位置

\b 匹配非單詞分界位置。

regexp 物件的方法

regexp 物件有 3 個方法:test()、exec() 以及 compile()。

test() 方法檢索字串中的指定值。返回值是 true 或 false。

exec() 方法檢索字串中的指定值。返回值是被找到的值。如果沒有發現匹配,則返回 null。

compile() 方法用於改變 regexp。

compile() 既可以改變檢索模式,也可以新增或刪除第二個引數。

regexp 物件屬性

global regexp 物件是否具有標誌 g。

ignorecase regexp 物件是否具有標誌 i。

lastindex 乙個整數,標示開始下一次匹配的字元位置。

multiline regexp 物件是否具有標誌 m。

source 正規表示式的源文字。

支援正規表示式的 string 物件的方法

search 檢索與正規表示式相匹配的值。

match 找到乙個或多個正規表示式的匹配。

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

split 把字串分割為字串陣列。

正規表示式 正規表示式 總結

非負整數 d 正整數 0 9 1 9 0 9 非正整數 d 0 負整數 0 9 1 9 0 9 整數 d 非負浮點數 d d 正浮點數 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 負浮點數 正浮點數正則式 英文本串 a za z...

正規表示式 表示式

網域名稱 a za z0 9 a za z0 9 a za z0 9 a za z0 9 interneturl a za z s 或 http w w w 手機號碼 13 0 9 14 5 7 15 0 1 2 3 5 6 7 8 9 18 0 1 2 3 5 6 7 8 9 d 號碼 x x x...

Linux正規表示式 編寫正規表示式

為了所有實用化的用途,你可以通過使用程式產生正確的結果。然而,並不意味著程式總是如你所願的那樣正確地工作。多數情況下,如果程式不能產生想要的輸出,可以斷定真正的問題 排除輸入或語法錯誤 在於如何描述想要的東西。換句話說,應該考慮糾正問題的地方是描述想要的結果的表示式。表示式不完整或者公式表示得不正確...