js正則表達(dá)式常用方法梳理(附代碼案例)
1、常用的方法
RegExp:定義正則字面量。常用定義new RegExp(),或者//定義。
test:執(zhí)行正則表達(dá)式的字面量方法進(jìn)行匹配。匹配失敗返回false,匹配成功返回true。
exec:獲取正則匹配的片段,返回值是一個(gè)數(shù)組,第一個(gè)索引是匹配的字符串內(nèi)容;如果未匹配,返回null。在執(zhí)行的過(guò)程中要注意,exec方法默認(rèn)只捕獲第一個(gè)獲取的字符串內(nèi)容,如果想獲取多個(gè),需要在正則字面量中加入標(biāo)識(shí)符g(全局標(biāo)識(shí)符),第二次捕獲的時(shí)候,就會(huì)按照順序捕獲第二個(gè)相同的內(nèi)容。
在使用限定符{n,m}時(shí),exce會(huì)默認(rèn)捕獲最大長(zhǎng)度的字符串。如\d{1,3}進(jìn)行匹配時(shí),會(huì)返回最大的匹配長(zhǎng)度。如果像獲取最小的長(zhǎng)度,可以在限定符后面加上?,如\d{1,,3}?。具體的代碼,可以看代碼案例
注意:正則主要是用來(lái)匹配字符串的方法,所以原字符中的內(nèi)容只是值,與數(shù)字的類型沒有關(guān)系。
2、元字符
- \d:一位值為數(shù)字的字符串。
- \D:一位非數(shù)字的字符串。
- \s:一位空白內(nèi)容字符串,主要包含:換行(\n) 、空格(\t)、 縮進(jìn)。
- \S:一位非空白內(nèi)容的字符串。
- \w:一位包含字母、數(shù)字、下劃線的字符串。
- \W:一位不包含字母、數(shù)字、下劃線的字符串。
- .:任意內(nèi)容的字符串,不包含換行。
3、邊界符
- ^:開頭必須是xx字符串。
- $:結(jié)尾必須是xx字符串。
注意兩者同時(shí)使用時(shí),代表,開頭必須是xx,且結(jié)尾必須是xx,是兩種條件同時(shí)存在。
4、限定符
- *:通用符,至少包含0~多次。所有字符串都通用。
- +:代表1~多次。至少字符串要出現(xiàn)一次。
- ?: 代表0~1次。字符串出現(xiàn)一次時(shí),返回true;字符串不出現(xiàn)時(shí),返回false.
- {n}:代表連續(xù)出現(xiàn)n次。
- {n,}:代表至少連續(xù)出現(xiàn) >= n+次字符串。
- {n,m}:代表至少連續(xù)出現(xiàn)>=n 且 <=m長(zhǎng)度的字符串。
5、特殊符
- ():將元字符作為一個(gè)整體。將多種組合方式作為整體。
- | :代表或的含義,字面量中的規(guī)則只需要保持一個(gè)匹配條件即可。
- []:代表一位中括號(hào)的字符。如[12345689],包含其中的一位就符合條件。如 0-9、a-z、A-Z
6、常用表達(dá)式
以下是常用的正則表達(dá)式規(guī)則,以下是自己常用的一些表達(dá)式規(guī)則,可以直接復(fù)制粘貼:
郵箱地址:^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$ 網(wǎng)址:[a-zA-z]+://[^\s]* 或 ^http://([\w-]+\.)+[\w-]+(/[\w-./?%&=]*)?$ 國(guó)內(nèi)手機(jī)號(hào):^(13[0-9]|14[5|7]|15[0|1|2|3|5|6|7|8|9]|18[0|1|2|3|5|6|7|8|9])\d{8}$ 國(guó)內(nèi)電話號(hào):^(\(\d{3,4}-)|\d{3.4}-)?\d{7,8}$ 身份證號(hào)(15位、18位數(shù)字):^\d{8,18}|[0-9x]{8,18}|[0-9X]{8,18}?$
7、收獲總結(jié)
在回顧正則元字符的過(guò)程中,表達(dá)式的規(guī)則,首先定義包含的字符格式,然后限定字符串長(zhǎng)度,接著確定是否有邊界限制,如以xx開頭,以xx結(jié)尾,最后是進(jìn)行匹配執(zhí)行。將按照這個(gè)順序來(lái)理解正則,就容易很多。
8、代碼案例
const initData3 = ()=>{ let reg = /\d{1,3}/ let reg2 = /\d{1,3}?/ let str = "now is 1233434" let str2 = "now is 12" let a = reg.exec(str) let b = reg.exec(str2) let c = reg2.exec(str) let d = reg2.exec(str2) console.log('最大1',a) console.log('最大2',b) console.log('最小1',c) console.log('最小2',d) }
附:校驗(yàn)密碼強(qiáng)度
^(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{8,10}$
- (?=…) 是正向肯定預(yù)查的語(yǔ)法,表示在當(dāng)前位置向后查找匹配括號(hào)內(nèi)的表達(dá)式。
- .:匹配除換行符外的任意一個(gè)字符。
- .* 表示匹配任意數(shù)量的字符(除換行符外)。
- (?=.\d) 表達(dá)式的含義是:在當(dāng)前位置向后查找,如果存在至少一個(gè)數(shù)字,則匹配成功。當(dāng)前位置是在匹配的起始位置(^)之后。
- (?=.[a-z]) 表示使用正向肯定預(yù)查來(lái)匹配至少一個(gè)小寫字母。當(dāng)前位置是在匹配的起始位置(^)之后。
- (?=.*[A-Z]) 表示使用正向肯定預(yù)查來(lái)匹配至少一個(gè)大寫字母。當(dāng)前位置是在匹配的起始位置(^)之后。
包含大小寫字母和數(shù)字的組合,不能使用特殊字符,長(zhǎng)度在8-10之間。
總結(jié)
到此這篇關(guān)于js正則表達(dá)式常用方法的文章就介紹到這了,更多相關(guān)js正則表達(dá)式常用方法內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
關(guān)于javascript模塊加載技術(shù)的一些思考
這篇文章主要介紹了關(guān)于javascript模塊加載技術(shù)的一些思考 ,需要的朋友可以參考下2014-11-11JS+CSS模擬可以無(wú)刷新顯示內(nèi)容的留言板實(shí)例
這篇文章主要介紹了JS+CSS模擬可以無(wú)刷新顯示內(nèi)容的留言板,涉及javascript操作dom元素、鼠標(biāo)事件及css樣式的技巧,需要的朋友可以參考下2015-03-03JavaScript 嵌套函數(shù)指向this對(duì)象錯(cuò)誤的解決方法
JavaScript對(duì)于全局函數(shù)內(nèi)的this綁定為全局對(duì)象,而對(duì)于嵌套函數(shù)也采用了相同的解釋。2010-03-03js時(shí)鐘翻牌效果實(shí)現(xiàn)代碼分享
這篇文章主要介紹了javascript時(shí)鐘翻牌效果的實(shí)現(xiàn),效果非??犰牛瑢?shí)現(xiàn)步驟也很簡(jiǎn)單,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2015-08-08微信小程序?qū)崿F(xiàn)流程進(jìn)度的圖樣式功能
最近正在做微信小程序,需要實(shí)現(xiàn)一個(gè)流程進(jìn)度的圖樣式,下面小編給大家?guī)?lái)了微信小程序?qū)崿F(xiàn)流程進(jìn)度的圖樣式功能實(shí)例代碼,需要的朋友參考下吧2018-01-01鼠標(biāo)經(jīng)過(guò)tr時(shí),改變tr當(dāng)前背景顏色
本篇文章主要介紹了鼠標(biāo)經(jīng)過(guò)tr時(shí),改變tr當(dāng)前背景顏色的示例代碼,需要的朋友可以過(guò)來(lái)參考下,希望對(duì)大家有所幫助2014-01-01微信小程序常用簡(jiǎn)易小函數(shù)總結(jié)
這篇文章主要介紹了微信小程序常用簡(jiǎn)易小函數(shù),結(jié)合實(shí)例形式總結(jié)分析了微信小程序提示、登陸、驗(yàn)證、session操作等相關(guān)操作函數(shù)與使用技巧,需要的朋友可以參考下2019-02-02