JavaScript中正則表達(dá)式的實(shí)際應(yīng)用詳解
實(shí)際工作中,JavaScript正則表達(dá)式還是經(jīng)常用到的。所以這部分的知識(shí)是非常重要的。
一、基礎(chǔ)語(yǔ)法:
第一種:字面量語(yǔ)法
var expression=/pattern/flags;
第二種:RegExp構(gòu)造函數(shù)語(yǔ)法
var pattern = /\w/gi; //字面量語(yǔ)法
var pattern = new RegExp('\\w', 'gi');//構(gòu)造函數(shù)語(yǔ)法,這兩者是等價(jià)的
這里有個(gè)注意點(diǎn)就是:如果正則表達(dá)式是動(dòng)態(tài)的話,只能選擇第二種。
其中的flags有3個(gè)標(biāo)志
g:表示全局模式,即模式將被應(yīng)用于所有字符串,而非在發(fā)現(xiàn)第一個(gè)匹配項(xiàng)時(shí)立即停止;
i:表示不區(qū)分大小寫(xiě)模式,即在確定匹配項(xiàng)時(shí)忽略模式與字符串的大小寫(xiě);
m:表示多行模式,即在到達(dá)一行文本末尾時(shí)還會(huì)繼續(xù)查找下一行中是否存在與模式匹配的項(xiàng)。
當(dāng)然還有其他的flags,用到的極少,不做過(guò)多闡述。
至于以上的\w什么意思,稍等,請(qǐng)繼續(xù)往下看。
二、方法
主要有test(),search(),match(),replace()。當(dāng)然還有其它的很多方法,不作闡述,畢竟用到的很少。
1、test()方法的使用
判斷某個(gè)字符串中是否含有相應(yīng)的字符串
2、search()方法的使用
搜索相應(yīng)的字符串第一次出現(xiàn)的索引位置,如果未找到,則返回-1
3、match()方法的使用
返回匹配的數(shù)組
4、replace()方法的使用,這個(gè)用到的還是非常多的
匹配相應(yīng)的字符串,然后將其替換成其他字符串
三、匹配表達(dá)式跟實(shí)戰(zhàn)
1、斷言:
所謂的斷言呢,就是表示一個(gè)匹配在某些條件下發(fā)生??傊?,概念有點(diǎn)繞,直接看下文。待我慢慢續(xù)來(lái)。
| 字符 | 描述 |
|---|---|
| ^ | 匹配開(kāi)頭 |
| $ | 匹配結(jié)尾 |
| \b | 匹配單詞的邊界 |
| \B | 匹配非單詞的邊界 |
舉個(gè)例子
我要匹配一個(gè)字符串,開(kāi)頭到結(jié)尾是dog,忽略大小寫(xiě)
var pattern = /^dog$/i;//忽略大小寫(xiě)
console.log(pattern.test('dog'));//true
console.log(pattern.test('sdfdog'));//false
console.log(pattern.test('dog56'));//false
console.log(pattern.test('dOG'));//true
var pattern = /\b\w+/g;//全局匹配,這里的+,是量詞,代表1次或者多次
console.log('Hello World'.match(pattern));//輸出['Hello','World'],這里就是match用法,返回匹配的數(shù)組。
在這里,說(shuō)下,\b是匹配單詞的邊界,那么\B是匹配非單詞的邊界。一個(gè)小寫(xiě),一個(gè)大寫(xiě),大寫(xiě)是反義。那么不必我多說(shuō)了吧。
再說(shuō)下單詞邊界,可能很多人都不太清楚單詞邊界
我稍微解釋下啊,比如說(shuō),Hello World單詞邊界有四個(gè),分別是H位置,o位置,W位置,d位置
2、字符類:
| 元字符 | 描述 |
|---|---|
| . | 查找單個(gè)字符,除了換行和行結(jié)束符 |
| \w | 查找單詞字符,相當(dāng)于[A-Za-z0-9_] |
| \W | 查找非單詞字符,相當(dāng)于[^A-Za-z0-9_] |
| 下面的反義便不再羅列出來(lái)了。 | |
| \d | 查找數(shù)字,相當(dāng)于[0-9] |
| \s | 查找空白字符 |
| \0 | 查找NULL字符 |
| \n | 查找換行符 |
| \f | 查找換頁(yè)符 |
| \r | 查找回車符 |
| \t | 查找制表符 |
| \v | 查找垂直制表符 |
3、范圍:
| 字符 | 描述 |
|---|---|
| [abc] | 匹配a,b,c中的任意一個(gè)字符 |
| [^abc] | 匹配不是a,b,c中的任意一個(gè)字符 |
| [0-9] | 匹配0-9任意范圍的數(shù)字,同理[a-z]匹配a-z任意范圍的字符 |
| [a-z] | 匹配a到z之間的任意一個(gè)字符 |
| x|y | 匹配x或者y |
4、量詞:
| 字符 | 描述 |
|---|---|
| n+ | 匹配任何包含至少一個(gè)字符n的字符串 |
| n* | 匹配任何包含零個(gè)或多個(gè)n的字符串 |
| n? | 匹配任何包含零個(gè)或者一個(gè)n的字符串 |
| n{x} | 匹配包含x個(gè)n的字符串 |
| n{x,y} | 匹配最少x個(gè),最多y個(gè)n的字符串 |
四、拓展
匹配10-36之間的數(shù)字
var pattern = /1[2-9]|[2-3][0-9]|4[0-6]/;//12-46 console.log(pattern.test(11));//false console.log(pattern.test(12));//true console.log(pattern.test(20));//true console.log(pattern.test(36));//true console.log(pattern.test(46));//true console.log(pattern.test(47));//false
將'Hello,World!Hello'中的Hello替換成Welcome
這里主要是強(qiáng)調(diào)一下replace方法在正則中的使用,因?yàn)檫@個(gè)在實(shí)際中用到的還是非常多的。后面的flags中的g,加上跟不加上有著很大的區(qū)別的。
var pattern = /Hello/g; var oldString = 'Hello,World!Hello'; var newString = oldString.replace(pattern, 'Welcome'); console.log(newString);//Welcome,World!Welcome
總結(jié)
到此這篇關(guān)于JavaScript中正則表達(dá)式的實(shí)際應(yīng)用的文章就介紹到這了,更多相關(guān)JavaScript正則表達(dá)式內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
在layui中l(wèi)ayer彈出層點(diǎn)擊事件無(wú)效的解決方法
今天小編就為大家分享一篇在layui中l(wèi)ayer彈出層點(diǎn)擊事件無(wú)效的解決方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-09-09
BootStrap實(shí)現(xiàn)帶關(guān)閉按鈕功能
這篇文章主要介紹了BootStrap實(shí)現(xiàn)帶關(guān)閉按鈕功能,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2017-02-02
javascript代碼編寫(xiě)需要注意的7個(gè)小細(xì)節(jié)小結(jié)
每種語(yǔ)言都有它特別的地方,對(duì)于JavaScript來(lái)說(shuō),使用var就可以聲明任意類型的變量,這門腳本語(yǔ)言看起來(lái)很簡(jiǎn)單,然而想要寫(xiě)出優(yōu)雅的代碼卻是需要不斷積累經(jīng)驗(yàn)的。本文利列舉了JavaScript初學(xué)者應(yīng)該注意的七個(gè)細(xì)節(jié),與大家分享。2011-09-09
js CSS3實(shí)現(xiàn)卡牌旋轉(zhuǎn)切換效果
這篇文章主要為大家詳細(xì)介紹了js CSS3實(shí)現(xiàn)卡牌旋轉(zhuǎn)切換效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-07-07
javascript onkeydown,onkeyup,onkeypress,onclick,ondblclick
昨天群里面的朋友問(wèn)了個(gè)比較有意思的問(wèn)題,keydown,keyup,keypress事件的先后順序。2009-02-02
JavaScript時(shí)間對(duì)象之常用方法的設(shè)置實(shí)例
這篇文章主要為大家介紹了JavaScript時(shí)間對(duì)象常用方法的設(shè)置實(shí)例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-05-05
Javascript 模擬mvc實(shí)現(xiàn)點(diǎn)餐程序案例詳解
這篇文章主要介紹了Javascript 模擬mvc實(shí)現(xiàn)點(diǎn)餐程序案例詳解,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-12-12

