JavaScript RegExp 對(duì)象用法詳解
當(dāng)您檢索某個(gè)文本時(shí),可以使用一種模式來(lái)描述要檢索的內(nèi)容。RegExp 就是這種模式。
簡(jiǎn)單的模式可以是一個(gè)單獨(dú)的字符。
更復(fù)雜的模式包括了更多的字符,并可用于解析、格式檢查、替換等等。
您可以規(guī)定字符串中的檢索位置,以及要檢索的字符類型,等等。
1.基本用法
<script> // 創(chuàng)建正則 var reg = /hello/ // 檢測(cè)某個(gè)字符串是否有符合正則格式的文本 var flag = reg.test("hello world") console.log(flag) // true </script>
2.修飾符
修飾符用于執(zhí)行區(qū)分大小寫(xiě)和全局匹配
i 不區(qū)分大小寫(xiě)
g 全局匹配
<script> // 默認(rèn)會(huì)區(qū)分大小寫(xiě) var reg = /hello/ var flag = reg.test("Hello World") console.log(flag) // false // 添加i修飾符 不區(qū)分大小寫(xiě) var reg2 = /hello/i var flag2 = reg2.test("Hello World") console.log(flag2) // true var str = "I'm in a bad mood, really bad" // 默認(rèn)非全局匹配 var reg3 = /bad/ var newStr = str.replace(reg3,"good") // 只替換了一個(gè)bad console.log(newStr) // I'm in a good mood, really bad // 全局匹配 var reg4 = /bad/g var newStr2 = str.replace(reg4,"good") // 替換了全局的bad為good console.log(newStr2) // I'm in a good mood, really good // 同時(shí)使用 var reg5 = /bad/gi </script>
3.元字符
元字符是擁有特殊含義的字符:
. 查找單個(gè)字符,除了換行和行結(jié)束符。(通俗的說(shuō)是任意字符)
- \d 匹配數(shù)字0-9
- \D 匹配非數(shù)字
- \s 匹配任意空白字符(不局限空格)
- \S 匹配非空白字符
- \w 元字符用于查找單詞字符。(單詞字符包括:a-z、A-Z、0-9,以及下劃線)
- \W 元字符用于查找非單詞字符。
4.方括號(hào)
方括號(hào)用于查找某個(gè)范圍內(nèi)的字符
- [abc] 匹配中括號(hào)中存在的一個(gè)字符(a,b,c中的一個(gè))
- [^abc] 匹配中括號(hào)中不存在的一個(gè)字符(除a,b,c中以外的字符)
- [0-9] 查找任何從 0 至 9 的數(shù)字。
- [a-z] 查找任何從小寫(xiě) a 到小寫(xiě) z 的字符。
- [A-Z] 查找任何從大寫(xiě) A 到大寫(xiě) Z 的字符。
- [A-z] 查找任何從大寫(xiě) A 到小寫(xiě) z 的字符。
5.量詞
- \d{6} 匹配6個(gè)數(shù)字
- \d{4,6} 匹配4到6個(gè)數(shù)字
- \d{4,} 匹配至少4個(gè)數(shù)字
- ? 0或1 超出1個(gè)不匹配
- + 至少1個(gè)
- * 0個(gè)或多個(gè)
.*會(huì)盡可能的匹配更長(zhǎng)的字符(貪婪)
.*?會(huì)盡可能的匹配更短的字符(禁止貪婪)
\d{4,6} 會(huì)盡可能的匹配更長(zhǎng)的字符(貪婪)
\d{4,6}? 會(huì)盡可能的匹配更短的字符(禁止貪婪)
6.邊界匹配
^n 匹配任何開(kāi)頭為 n 的字符串。
n$ 匹配任何結(jié)尾為 n 的字符串。
7.實(shí)例
匹配手機(jī)號(hào)
var reg = /^1\d{10}$/;
匹配QQ號(hào)
var reg = /^[1-9]\d{4,10}$/;
匹配身份證號(hào)
var reg = /^[1-9]\d{16}[Xx\d]$/;
變量名檢測(cè)(只能由字母,數(shù)字,下劃線組成,且不能以數(shù)字開(kāi)頭,長(zhǎng)度6-15)
var reg = /^[A-z_]\w{5,14}$/;
8.相關(guān)方法
test():檢測(cè)正則表達(dá)式是否能在指定字符串中查找到匹配的文本
<script> var str = "hi66morning77" // 匹配連續(xù)的3個(gè)數(shù)字 var reg = /\d{3}/ console.log(reg.test(str)) // false // 匹配連續(xù)的7個(gè)小寫(xiě)字母 var reg2 = /[a-z]{7}/ console.log(reg2.test(str)) // true </script>
match():查找字符串,將符合正則表達(dá)式規(guī)則的文本以數(shù)組形式返回,如果沒(méi)有指定全局匹配,則只查找一次。找不到就返回null
<script> var str = "hi66morning77" // 匹配連續(xù)的2個(gè)數(shù)字 非全局匹配 var reg = /\d{2}/ console.log(str.match(reg)[0]) // 66 // 匹配連續(xù)的2個(gè)數(shù)字 全局匹配(推薦) var reg2 = /\d{2}/g console.log(str.match(reg2)) // ["66", "77"] </script>
search():返回目標(biāo)自字符串第一次出現(xiàn)的索引值(所以全局匹配被忽略)
<script> var str = "hi66morning77" // 匹配連續(xù)的2個(gè)數(shù)字 非全局匹配 var reg = /\d{2}/ console.log(str.search(reg)) // 2 // 匹配a,b,m中的一個(gè) var reg2 = /[abm]/ console.log(str.search(reg2)) // 4 </script>
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
TypeScript 獲取函數(shù)的參數(shù)類型、返回值類型及定義返回函數(shù)類型
這篇文章主要介紹了TypeScript 獲取函數(shù)的參數(shù)類型、返回值類型及定義返回函數(shù)類型,需要的朋友可以參考下2024-02-02在Postman的腳本中如何使用pm對(duì)象獲取接口的請(qǐng)求參數(shù)
這篇文章主要介紹了在Postman的腳本中如何使用pm對(duì)象獲取接口的請(qǐng)求參數(shù),本文通過(guò)實(shí)例代碼圖文相結(jié)合給大家介紹的非常詳細(xì),需要的朋友可以參考下2023-09-09Layui 動(dòng)態(tài)禁止select下拉的例子
今天小編就為大家分享一篇Layui 動(dòng)態(tài)禁止select下拉的例子,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-09-09bootstrap日期插件daterangepicker使用詳解
這篇文章主要為大家詳細(xì)介紹了bootstrap日期插件daterangepicker的使用方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-10-10如何設(shè)置iframe高度自適應(yīng)在跨域情況下的可用方法
iframe的高度需要根據(jù)子頁(yè)面的實(shí)際高度來(lái)進(jìn)行調(diào)整,但是如果子頁(yè)面不在同一域中怎么辦?這時(shí)候腳本沒(méi)有辦法獲取到子頁(yè)面的高度,存在JavaScript跨域的問(wèn)題2013-09-09