一直使用簡單的正則表達式,遇到難點的就沒法簡潔高效的寫出正則,故此整理一篇須要記憶應用的正則使用。正則表達式
"o".repeat(3) // ooo
表示重複某個字符串指定次數reg.exec(str)方法: 方法在一個指定字符串中執行一個搜索匹配。找到返回一個結果數組或未找到 null。 返回的數組將徹底匹配成功的文本做爲第一項,將正則括號裏匹配成功的做爲數組填充到後面數組
str.search(reg)方法: 執行正則表達式和 String對象之間的一個搜索匹配。若是匹配成功,則 search() 返回正則表達式在字符串中首次匹配項的索引,不然,返回 -1。與上面的reg.test()相似可判斷是否存在某個正則模式函數
str.match(reg)方法: 當一個字符串與一個正則表達式匹配時, match()方法檢索匹配項。url
String.prototype.split(reg): 以指定的分隔符字符串將一個String對象分割成字符串數組, 若是分隔符是("")
則會每一個字符都切割。spa
Array.prototype.join()方法: join() 方法將一個數組(或一個類數組對象)的全部元素鏈接成一個字符串並返回這個字符串,不改變原數組。prototype
()
爲空默認爲,
當("")
是引號時則元素之間沒有任何字符。這個方法經常和String.prototype.split()連用預約義類code
字符集 | 等價於 | |
---|---|---|
. | [ ^ 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 |
單詞邊界 |
\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
可用來去除不是數字的的字符ip
好比: var yourNumber = 'phoneNumber15555555555' var number.replace(/\D/,'')
\S
可用來確保必填字段中字符
var username = ' daixixi ' var value = /\S/.test(username)
各類修飾符時修飾前一個元素出現的次數
var a = "hello world2hello china".match(/\w+/)
.
匹配除了換行和回車符以外字符,能夠使用[/\s\S/]
匹配全部字符/(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 = '<a href="http://a.com">"網址"</a>' var reg = /href="((https?:)?\/\/.+?)"/ console.log(str.match(reg)) var url = str.match(reg)[1]
表達式 | 含義 |
---|---|
exp1(?=exp2) | 匹配後面是exp2的exp1 |
exp1(?!exp2) | <span class="Apple-tab-span" style="white-space:pre"></span>匹配後面不是exp2的exp1 |
獲得是exp1的值,不過須要知足條件纔會被匹配中