摘要:作為的內置對象表示對正則表達式有著原生的支持。返回值是被找到的值。正則表達式替換字符替換與正則表達式匹配的子串。正則表達式返回數組最大長度按照匹配到的字符作為切割點。
更多內容歡迎來到博客 :https://imjianjian.github.io 正則表達式基礎 元字符
正則表達式中有兩種字符:
1.元字符.表達式中的特殊字符
字符 | 含義 |
---|---|
t | 水平制表符 |
v | 垂直制表符 |
n | 換行符 |
r | 回車符 |
0 | 空字符 |
f | 換頁符 |
cX | 與X對應的控制字符符(Ctrl+X) |
。。。 | 。。。 |
2.原意文本字符.普通字符,代表原本的意思
字符類正則表達式中的字符與待校驗字符串中的字符一一對應。
可以用 [ ] 將一些字符歸為一類
也可以使用^取反,例如1
范圍類如果在字符類中要將每一種情況都列入曉得太麻煩,對于數字和字母可以使用范圍類簡寫,例如:
[0-9]
[a-z]
[a-zA-Z]
預定義類正則表達式還提供了一些預定義類,來對復雜范圍類進行概括
字符 | 等價 | 含義 |
---|---|---|
. | 2 | 除了回車和換行符外的所有字符 |
d | [0-9] | 數字字符 |
D | 3 | 非數字字符 |
s | [tnx0Bfr] | 空白符 |
S | 4 | 非空白符 |
w | [a-zA-Z_0-9] | 單詞字符(數字,字母,下劃線) |
W | 5 | 非單詞字符 |
字符 | 含義 |
---|---|
^ | 以xxx開始 |
$ | 以xxx結束 |
b | 單詞邊界 |
B | 非單詞邊界 |
量詞變數所匹配的字符串重復次數
字符 | 含義 |
---|---|
? | 出現零次或一次(最多一次) |
+ | 出現一次或多次(至少一次) |
* | 出現零次或多次(任意次) |
{n} | 出現n次 |
{n,m} | 出現n到m次 |
{n,} | 至少出現n次 |
d{3,6} //盡可能多匹配,但最多為6次貪婪模式
d{3,6}? //盡可能少匹配,但至少為3次分組
使用“()”將匹配規則劃分成幾個組
//"yes"連續出現3次 (yes){3} //或:|,可以匹配yes or no或yes and no yes(or|and)no //反向應用 "2017-11-1".replace(/(d{4})-(d{2})-(d{0,2})/,"$3/$2/$1") 輸出:1/11/2017 三個“()”將正則表示時分為三組,每組可以用$n來表示,n即在表達式中出現的次序。該表達式中的三組分別匹配到"2017"、"11"、"1",該函數將匹配到的字符串用第二個參數替換。$3/$2/$1==>2017/11/1前瞻
前瞻即將匹配到的字符串再向前觀察是否也符合所定義的規則,例如校驗數字前是否帶有“¥”,我們可以使用這個正則表達式:
d{0,}(?=¥)
名稱 | 規則 | 含義 |
---|---|---|
正向前瞻 | exp(?=assert) | |
反向前瞻 | exp(?!assert) | |
正向后顧 | exp(?<=assert) | JavaScript不支持 |
反向后顧 | exp(?<=!assert) | JavaScript不支持 |
簡而言之,正則表達式就是對比校驗字符串是否符合某種規則。
RegExp作為JavaScript的內置對象表示JavaScript對正則表達式有著原生的支持。
創建對象1.使用構造函數 var reg = new RegExp("imjianjian","g"); 2.字面量方式 var reg = /imjianjian/g
以上兩種方式都能創建js正則表達式對象,都是校驗字符串中是否含有 imjianjian 這個單詞,b表示單詞邊界。且兩種方式中都使用了修飾符,構造函數用第二個參數來傳入,而字面量則直接寫在表達式后。修飾符一共如下三種:
g。global全文搜索,不寫則只匹配字符串中的第一個
i。ignore case,忽略大小寫,不寫則大小寫敏感
m。mutiple lines,多行搜索,不寫則只搜索第一行
對象屬性global:是否全文搜索,默認false
ignoreCase:是否大小寫敏感,默認false
multiline:多行搜索,默認false
lastIndex:當前表達式匹配內容的最后一個字符的下一個位置
source:正則表達式的文本字符串
對象方法 test(string)test() 方法檢索字符串中的指定值。返回值是 true 或 false。
/am/.test("i am jianjian") //true /am/.test("he is jianjian") //falseexec(string)
exec() 方法檢索字符串中的指定值。返回值是被找到的值。如果沒有發現匹配,則返回 null。
如果需要找到所有某個字符的所有存在,在找到第一個匹配的字符后,將存儲其位置。如果再次運行 exec(),則從存儲的位置開始檢索,并找到下一個匹配字符,并存儲其位置。
var str = "this is jianjian"; var reg = new RegExp("is","g"); var result; while ((result = reg.exec(str)) != null) { console.log(result); console.log(reg.lastIndex); }conpile(regexp,modifier)
compile() 既可以改變檢索模式,也可以添加或刪除第二個參數。即更改匹配規則。
reg=/man/g; reg2=/(wo)?man/g; reg.compile(reg2,"i");//將匹配規則改為reg2,且大小寫不敏感string對象中支持使用正則表達式的方法 search(reg)
檢索與正則表達式相匹配的值。返回第一個與 regexp 相匹配的子串的起始位置。如果沒有找到任何匹配的子串,則返回 -1。search() 方法不執行全局匹配,它將忽略標志 g。它同時忽略 regexp 的 lastIndex 屬性,并且總是從字符串的開始進行檢索,這意味著它總是返回 stringObject 的第一個匹配的位置。
match(reg|str)找到一個或多個正則表達式的匹配。返回存放匹配結果的數組。該數組的內容依賴于 regexp 是否具有全局標志 g。
replace(reg,replacement)reg:正則表達式
replacement:替換字符
替換與正則表達式匹配的子串。返回一個新的字符串,是用 replacement 替換了 regexp 的第一次匹配或所有匹配之后得到的。
split(reg,howmany)reg:正則表達式
howmany:返回數組最大長度
按照匹配到的字符作為切割點。返回切割后的數組。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/92639.html
Javascript的正則表達式是前端中比較重要的部分,正則表達式主要用于字符串處理,表單驗證等場合,實用高效,文章主要對JavaScript中的正則的學習與總結 正則表達式的定義 正則表達式:是一個描述字符模式的對象,JavaScrip中正則表達式用RegExp對象表示,可以使用RegExp構造函數來創建正則對象 正則表達式的創建 1.字面量創建 var reg = /[a-z]/; 2.構...
摘要:選擇分組和引用正則表達式的語法還包括指定選擇項子表達式分組和引用前一子表達式的特殊字符。帶圓括號的表達式的另一個用途是允許在同一正則表達式的后部引用前面的子表達式。 正則表達式(regular expression)是一個描述字符模式的對象。JavaScript的 RegExp類 表示正則表達式,String和RegExp都定義了方法,后者使用正則表達式進 行強大的模式匹配和文本檢索與...
摘要:引用就是允許在同一個正則表達式的后部引用前面的子表達式。這個數字制定了帶圓括號的子表達式在正則表達式中的位置。對正則表達式中前一個子表達式的引用,并不是指對子表達式模式的引用,而是指與那個模式匹配的文本的引用。 前言 本文主要是在讀《JavaScript高級程序語言設計》一書有關正則表達式的章節的知識點記錄,方便后續查閱。 什么是正則表達式 正則表達式是用來描述字符組合的某種規則。它可...
摘要:正則表達式的字符串表示,按照字面量形式而非傳入構造函數中的字符串模式返回。其中,表示匹配項在字符串中的位置,而表示應用正則表達式的字符串。下面列出了正則表達式所不支持的特性。關卡按要求完成下列常用的正則表達式。 由于本課程的核心是 JavaScript,所以本文著重講解了「正則表達式」在 JavaScript 中的用法,并未深入「正則表達式」的具體細節。如果您尚不了解「正則表達式」,強...
摘要:正則表達式的意義中的正則表達式使用表示,可以使用構造函數來創建對象,不過對象更多的是通過一種特殊的直接量語法來創建。用構造函數也可以定義一個與之等價的正則表達式,代碼如下正則表達式的模式規則是由一個字符序列組成的。 正則表達式的模式匹配 正則表達式(regular expression)是一個描述字符模式的對象。javascript的RegExp對象表示正則表達式,String和Reg...
閱讀 1156·2021-11-24 09:38
閱讀 3604·2021-11-22 15:32
閱讀 3458·2019-08-30 15:54
閱讀 2568·2019-08-30 15:53
閱讀 1494·2019-08-30 15:52
閱讀 2498·2019-08-30 13:15
閱讀 1837·2019-08-29 12:21
閱讀 1395·2019-08-26 18:36