js 正規表示式總結

2021-09-11 15:31:58 字數 2774 閱讀 6334

正則也用了很多了,而真正自己寫的正則到真是寥寥無幾呀,不是貼上複製,就是貼上複製修改,有時候對於一些正則還不是很理解匹配的過程,覺得這作為程式設計師最基本的知識還是應該自己寫一下正則比較好,所以重新又看了一下正則,做一下記錄,以備以後自己複習和使用;

正則主要是用於操作字串

驗證字串是不是合法

查詢符合制定特徵的字串

替換字串

零寬度:子表示式匹配的僅僅是個位置,或者匹配的內容並不儲存到最終的匹配結果中,就認為這個子表示式是零寬的,(其實就是表示式匹配的開始位置和結束位置是乙個位置);如:"^ $ (?=***) (?!=***)"

占有字元:子表示式匹配的是字元內容不是位置,並儲存在最後的匹配結果中

var reg = /abc/; 可以認為/a/ /b/ /c/ 都是子表示式

複製**

申明方式:

建構函式:

var reg1 = new regexp("xyz",'gi');

//引數一:正則內容

//引數二:修飾符;

// i:不區分大小寫;

// g:全域性匹配;

// m:多行匹配,遇到換行符也不結束,匹配到到字串結束;

複製**

字面量:
var reg = /xyz/gi;

複製**

方法:reg.test() //返回true|false

var reg = /zyx/i;

var str="zyxaa"

reg.test(str) // true;

複製**

exec方法、compile方法 可以自行了解

其他使用的都是字串的方法,不是正則方法;

匹配多字元

表示式匹配範圍

佔位表示式

匹配範圍

\d任意乙個數字,0~9 中的任意乙個

\d匹配取非 \w

\w任意乙個字母或數字或下劃線

\s包括空格、製表符、換頁符等空白字元的其中任意乙個

\b匹配位置(\b 取非的位置)

\b匹配乙個單詞邊界,乙個位置:(其中一邊是 "\w" 範圍,另一邊是 非"\w" 的範圍)

.除了換行符(\n)以外的任意乙個字元

[^12a-z]取補集

[12a-z]

匹配中括號中的任意乙個1或2或a到z的字元

^匹配開始位置,不匹配任何字元

$匹配結束位置

|兩邊表示式是或的關係

()子表示式開始和結束的位置

1. 注意

很多元字元在字元組內都變成了普通字元,如(^$?)等

[.$^?]就是匹配點和$^?

[^] ^在第乙個位置時候是取補集

複製**

次數修飾

表示式匹配範圍

佔位表示式

匹配範圍

重複n次

重複至少m次數

重複次數在[m,n]這個範圍

?重複0到1次 相當於

+重複次數大於等於1 相當於

*重複任意次數 相當於

對於整個表示式來說,一般是從字串位置0處開始嘗試,中間有回溯等一些處理,如何匹配成功則返回,接著從成功之後的位置接著匹配,如何失敗,就從位置1重新開始之前的匹配,以此類推,直到成功或者是匹配失敗;

例如下面匹配:

匹配次數的貪婪與非貪婪

貪婪模式:正則預設情況是貪婪模式:在可以讓整個表示式匹配成功的前提下,盡可能最多的去匹配字串

非貪婪匹配:在匹配次數修飾符(/?+*)之後加上"?" 則在可以讓整個表示式匹配成功的前提下,盡可能少的去匹配字串;

捕獲組的引用:

括號"( )"在正則中括號的作用(起到分組的效果):

在被修飾匹配次數的時候,括號中的表示式可以作為整體被修飾;

取匹配結果的時候,括號中的表示式匹配到的內容可以被單獨得到;

捕獲組 : 就是把正規表示式中子表示式(括號中的表示式)匹配的內容,儲存到記憶體中以數字編號或顯式命名的組裡,方便後面引用。

引用:可以在正規表示式內部引用\number (反向引用), 也可以在正規表示式外部引用$number

引用number是和子表示式左側括號出現的順序相對應的

括號 "( )" 內的子表示式,如果希望匹配結果不進行記錄供以後使用,可以使用 "(?:***xx)" 格式

正則斷言(正向、負向、先行、後行)

js中不支援後行斷言,所以只介紹先行:

(?=pattern) 正向先行斷言 //代表字串中的乙個位置,緊接該位置之後的字串行能夠匹配pattern。

(?!pattern) 負向先行斷言 //代表字串中的乙個位置,緊接該位置之後的字串行不能匹配pattern。

複製**

只允許字母數字下劃線,必須含有大小寫和數字和下劃線

var reg=/^(?=.*[0-9])(?=.*[a-z])(?=.*[a-z])(?=.*\_)\w$/;

複製**

銀行卡四位一空格展示:

var str="888888888888888888";

var newstr= str.replace(/\s/g, '').replace(/(.)/g, "$1 ");

複製**

有趣的正則:

var reg = /[^\w.$]/;

reg 匹配非字母數字下劃線點和$ (匹配特殊字元和中文)

複製**

js正規表示式總結

1,斜槓用於轉義,在js正則裡,只有一些元字元 等 和 本身需要轉義,其他的不需要轉義,如果其他的字元前面使用了 可能會產生負面影響,比如 b,t這些有特殊含義的轉義。此外,在js正則中,還有乙個用處在於使用new regexp 形式建立正則物件時,比如new regexp a a 其中 是乘以的意...

js正規表示式總結

常用字元代表含義 匹配除換行符以外的任意字元 匹配 字串的開頭,a 匹配 an a 而不匹配 an a 匹配 字串的結尾,a 匹配 an a 而不匹配 an a 匹配前面元字元0次或多次,ba 將匹配b,ba,baa,baaa 匹配前面元字元1次或多次,ba 將匹配ba,baa,baaa 匹配前面元...

總結 js正規表示式

1.定義 正規表示式目的在於處理字串的查詢 驗證 修改 替換 var reg1 new regexp s g 建構函式的寫法 var reg2 s d?g 字面量寫法2.正規表示式方法 test 判斷字串是否存在符合正規表示式的子字串,存在返回true,反之返回false exec 返回乙個陣列,包...