摘要:如果匹配成功,則返回正則表達式在字符串中首次匹配項的索引否則,返回。參數如果傳入一個非正則表達式對象,則會隱式地使用將其轉換為一個參數如果你未提供任何參數,直接使用,那么你會得到一個包含空字符串的。
正則表達式
一直使用簡單的正則表達式,遇到難點的就無法簡潔高效的寫出正則,故此整理一篇需要記憶應用的正則使用。
正則表達式作用匹配一個字符串的子字符串(子集),或者替換該字符串。
不得不提的String和reg的常用方法codePointAt(pos) 方法:得到字符的碼位。漢字可以得到完整的碼位
fromCodePoint() 方法:參數提供字符的碼位返回對應的字符
include() 方法: 如果檢測到指定文本就返回true,否則返回false。接受第二個參數為開始搜索的指定索引值
startsWith() 方法: 如果在起始位置檢測到指定文本就返回true,否則返回false。接受第二個參數為開始搜索的指定索引值
endsWith() 方法: 從字符串末尾往前匹配。如果在結束部分檢測到指定文本返回true,否則返回false。接受第二個參數為開始搜索的指定索引值
repeat()方法: "o".repeat(3) // ooo 表示重復某個字符串指定次數
reg.test(str)方法: test()方法執行一個檢索,用來查看正則表達式在指定的字符串(str)中是否能被匹配。返回 true 或 false。
reg.exec(str)方法: 方法在一個指定字符串中執行一個搜索匹配。找到返回一個結果數組或未找到 null。 返回的數組將完全匹配成功的文本作為第一項,將正則括號里匹配成功的作為數組填充到后面
全局調用和非全局調用:全局調用時,在匹配后,它將把RegExp實例的lastIndex屬性設置為匹配文本的最后一個字符的下一個位置,當 exec() 再也找不到匹配的文本時,它將返回null,并把lastIndex屬性重置為0
str.search(reg)方法: 執行正則表達式和 String對象之間的一個搜索匹配。如果匹配成功,則 search() 返回正則表達式在字符串中首次匹配項的索引,否則,返回 -1。與上面的reg.test()類似可判斷是否存在某個正則模式
search() 方法不執行全局匹配,它將忽略標志g,它同時忽略正則表達式對象的lastIndex屬性,并且總是從字符串的開始進行檢索,這意味著它總是返回字符串的第一個匹配的位置
如果傳入一個非正則表達式對象,則會使用 new RegExp(obj) 隱式地將其轉換為正則表達式對象。
str.match(reg)方法: 當一個字符串與一個正則表達式匹配時, match()方法檢索匹配項。
參數:如果傳入一個非正則表達式對象,則會隱式地使用 new RegExp(obj) 將其轉換為一個reg
參數:如果你未提供任何參數,直接使用 match() ,那么你會得到一個包含空字符串的 Array :[""] 。
返回值:如果字符串匹配到了表達式,會返回一個數組,數組的第一項是進行匹配完整的字符串,之后的項是用圓括號捕獲的結果。如果沒有匹配到,返回null
全局調用:全局匹配返回的數組的內容與非全局大不相同,它的數組元素中存放的是字符串中所有的匹配子串,而且也沒有index屬性或input屬性
非全局調用:只在字符串中匹配依次,若沒有匹配到文本,match()返回null,匹配到返回一個數組,數組中第一個元素存放匹配到的文本,其余的元素存放的是與正則表達式的子表達式匹配的文本,數組具有兩個屬性,index ( 匹配文本的起始字符在字符串位置 )和 input屬性
String.prototype.replace(reg, function): 是將匹配內容應用函數后返回一個新字符串。
String.prototype.split(reg): 以指定的分隔符字符串將一個String對象分割成字符串數組, 如果分隔符是("")則會每個字符都切割。
注意:當字符串為空時,split()返回一個包含一個空字符串的數組,而不是一個空數組,如果字符串和分隔符都是空字符串,則返回一個空數組。
Array.prototype.join()方法: join() 方法將一個數組(或一個類數組對象)的所有元素連接成一個字符串并返回這個字符串,不改變原數組。
參數: 指定一個字符串將數組的每一個元素以這個字符串拼接,()為空默認為, 當("")是引號時則元素之間沒有任何字符。這個方法常常和String.prototype.split()連用
一些常用的匹配字符預定義類
字符集 | 等價于 | |
---|---|---|
. | [ ^ rn ] | 除了換行和回車符之外所有字符 |
d | [ 0-9 ] | |
D | [ ^ 0-9 ] | |
s | [ tvnr ] | 包含制表符、空格、垂直制表符 |
S | [ ^ tvnr ] | |
w | [a-zA-Z ] | |
W | [ ^ a-zA-Z ] |
量詞
重復修飾符 | 描述 | 示例 |
---|---|---|
{n} | 指定n 次 | /d{5}/數字出現5次 |
{n,} | 最少n次 | /d{5,}/數字至少出現5次 |
{n,m} | n值m次 | |
? | 最多一次,{0,1} | |
+ | 最少一次 | |
* | 任意次 |
邊界字符集
字符 | 含義 |
---|---|
^ | 以 xxx開頭 |
$ | 以 xxx結尾 |
單詞邊界 | |
B | 非單詞邊界 |
const re1 = /d/ 字面量語法 創建
const re2 = new RegExp(d) 構造函數 創建
使用正則搜索str = "It will rain tomorrow" //字符串在前 str.startWith("will") //true str.endsWith("will") //true str.includes("will") //true str.match(/w{3,}/g) // will rain tomorrow str.search(/w{3,}/g) // 3 //正則表達式在前 /w{3,}/g.test(str) //true ....常用用法
常用修飾符
g:global,全文搜索,不添加的話搜索到第一個結果停止搜索
i:ingore case,忽略大小寫,默認大小寫敏感
m:multiple lines,多行搜索
D 和 S W常用來去除不想要的
D可用來去除不是數字的的字符
比如: var yourNumber = "phoneNumber15555555555" var number.replace(/D/,"")
S 可用來確保必填字段中字符
var username = " daixixi " var value = /S/.test(username)
各種修飾符時修飾前一個元素出現的次數
var a = "hello world2hello china".match(/w+/)
.匹配除了換行和回車符之外字符,可以使用[/sS/]匹配所有字符
分組 : 當某一個修飾符對前一個元素進行影響時,若想對一組有作用則使用分組 /(ab)+/ 匹配至少一組連續的ab
__或__: 使用豎線表示或,/a|b/ 表示匹配a或b(有個笑話就是這個|寫成中文的丨怎么都查不出。。。)
取反 :有限字符集以外的字符 /[^abc]/ 除abc以外字符
__范圍__: 使用[a-z] 表示a到z 之間任意一個
__字符類__:使用[]來構建一個簡單的類,/[abc]/ 表示匹配其中任意一個均可
貪婪模式和非貪婪模式: 在設置了量詞后匹配是默認是貪婪模式會即以最大的量詞進行匹配,不過在量詞后面加上?后就可以取最小量詞進行匹配,是否匹配結束一般取決于是否加g
"123456789".match(/d{3,5}/g); //["12345", "6789"] "123456789".match(/d{3,5}?/g); //["123", "456", "789"]
分組嵌套:
var str = "前瞻:
表達式 | 含義 |
---|---|
exp1(?=exp2) | 匹配后面是exp2的exp1 |
exp1(?!exp2) | 匹配后面不是exp2的exp1 |
得到是exp1的值,不過需要滿足條件才會被匹配中
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/94616.html
摘要:每個構造函數定義了一類對象,表示由構造函數初始化對象的集合。嚴格模式下,明確禁止八進制數。日期和時間構造函數用來創建表示日期和時間的對象,包含方法。模式匹配函數是一個構造函數,創建正則表達式。布爾值表示兩種狀態,使用保留字和。 《Javascript權威指南》就是前端工程師口中常說的犀牛書,得名是因為中文翻譯出版的書籍封面是一只犀牛,是學習JavaScript的必讀書籍。 JavaSc...
閱讀 1566·2023-04-26 02:29
閱讀 3050·2021-10-11 10:58
閱讀 2899·2021-10-08 10:16
閱讀 3157·2021-09-24 09:47
閱讀 1568·2019-08-29 16:56
閱讀 2717·2019-08-29 11:03
閱讀 2003·2019-08-26 13:35
閱讀 3172·2019-08-26 13:34