VUE正則表達(dá)式用法全集整理(推薦!)
一、正則表達(dá)式的基本語法
var expression = /pattern(模式)/flags(標(biāo)識(shí)符);
二、如何創(chuàng)建正則表達(dá)式
1.字面量創(chuàng)建
代碼如下:
//匹配字符串中所有“at”的實(shí)例 var e = /at/g; //匹配第一個(gè)“bat”或“cat”,不區(qū)分大小寫 var e = /[bc]at/i;
2.RegExp構(gòu)造函數(shù)創(chuàng)建
RegExp構(gòu)造函數(shù)接收兩個(gè)參數(shù),第一個(gè)參數(shù)是要匹配的字符串模式,第二個(gè)是可選的標(biāo)識(shí)符字符串。 代碼如下:
//匹配第一個(gè)“bat”或“cat”,不區(qū)分大小寫 var e = new RegExp("[bc]at","i");
兩種創(chuàng)建方式的比較:
在ECMAScript3中,字面量創(chuàng)建和RegExp對(duì)象創(chuàng)建區(qū)別是:字面量創(chuàng)建始終會(huì)共享同一個(gè)RegExp實(shí)例,而構(gòu)造函數(shù)創(chuàng)建的每一個(gè)RegExp實(shí)例都是一個(gè)新實(shí)例 ECMAScript5明確規(guī)定:使用正則表達(dá)式字面量必須像直接調(diào)用RegExp構(gòu)造函數(shù)一樣,每次都創(chuàng)建新的RegExp實(shí)例。IE9+、Firefox 4+和Chrome都做出了修改。
需要注意的是,正則表達(dá)式中的元字符必須轉(zhuǎn)義。元字符有:
( [ { \ ^ $ | ) ? * + . ] }
例如:
//匹配第一個(gè)“[bc]at”,不區(qū)分大小寫 var e = /\[bc\]at/i; //在RegExp構(gòu)造函數(shù)創(chuàng)建時(shí),元字符需要雙重on轉(zhuǎn)義 var e = new RegExp("\\[bc\\]at","i");
三、RegExp實(shí)例的屬性和方法
RegExp 實(shí)例屬性
- ignoreCase 返回布爾值,表示RegExp對(duì)象是否具有標(biāo)志 i
- global 返回布爾值,表示RegExp對(duì)象是否具有表示 g
- multiline 返回布爾值,表示RegExp對(duì)象是否具有表示 m
- lastIndex 一個(gè)整數(shù),標(biāo)識(shí)開始下一次匹配的字符位置
- soure 返回正則表達(dá)式的原文本 (不包括反斜杠)
- i 執(zhí)行對(duì)大小寫不敏感的匹配
- g 執(zhí)行全局匹配 (查找所有匹配而非在找到第一個(gè)匹配后停止)
- m 執(zhí)行多行匹配
字符類匹配
- [...]查找方括號(hào)之間的任何字符
- [^..]查找任何不在方括號(hào)之間的字符
- [a-z]查找任何從小寫a到小寫z的字符
- [A-Z]查找任何從大寫A到大寫Z的字符
- [A-z]查找任何從大寫A到小寫z的字符
- . 查找單個(gè)字符,除了換行和行結(jié)束符
- \w 查找單詞字符,等價(jià)于 [a-zA-Z0-9]
- \W 查找非單詞字符,等價(jià)于 [^a-zA-Z0-9]
- \s 查找空白字符
- \S 查找非空白字符
- \d 查找數(shù)字,等價(jià)于[0-9]
- \D 查找非數(shù)字字符,等價(jià)于[^0-9]
- \b 匹配單詞邊界
- \r 查找回車符
- \t 查找制表符
- \0 查找NULL字符
- \n 查找換行符
重復(fù)字符匹配
- {n,m}匹配前一項(xiàng)至少n次,但不能超過m次
- {n,}匹配前一項(xiàng)n次或更多次
- {n}匹配前一項(xiàng)n次
- n?匹配前一項(xiàng)0次或者1次,也就是說前一項(xiàng)是可選的,等價(jià)于{0,1}
- n+匹配前一項(xiàng)一次或多次,等價(jià)于{1,}
- n*匹配前一項(xiàng)0次或多次,等價(jià)于{0,}
- n$匹配任何結(jié)尾為n的字符串
- ^n匹配任何開頭為n的字符串
- ?=n匹配任何其后緊接指定字符串n的字符串
- ?!n匹配任何其后沒有緊接指定字符串n的字符串
匹配特定數(shù)字
- ^[1-9]\d*$ 匹配正整數(shù)
- ^-[1-9]\d*$ 匹配負(fù)整數(shù)
- ^-?[0-9]\d*$ 匹配整數(shù)
- ^[1-9]\d*|0$ 匹配非負(fù)整數(shù)(正整數(shù) + 0)
- ^-[1-9]\d*|0$ 匹配非正整數(shù)(負(fù)整數(shù) + 0)
- ^[1-9]\d*.\d*|0.\d*[1-9]\d*$ 匹配正浮點(diǎn)數(shù)
- ^-([1-9]\d*.\d*|0.\d*[1-9]\d*)$ 匹配負(fù)浮點(diǎn)數(shù)
- ^-?([1-9]\d*.\d*|0.\d*[1-9]\d*|0?.0+|0)$ 匹配浮點(diǎn)數(shù)
- ^[1-9]\d*.\d*|0.\d*[1-9]\d*|0?.0+|0$ 匹配非負(fù)浮點(diǎn)數(shù)(正浮點(diǎn)數(shù) + 0)
- ^(-([1-9]\d*.\d*|0.\d*[1-9]\d*))|0?.0+|0$ 匹配非正浮點(diǎn)數(shù)(負(fù)浮點(diǎn)數(shù) + 0)
四、正規(guī)則表達(dá)式有哪些方法?
1.exec()方法
exec()方法為模式的捕獲組而設(shè)計(jì)的,該方法接收一個(gè)參數(shù),即要匹配的字符串,該方法返回一個(gè)包含捕獲組的數(shù)組Array,如果沒有捕獲組匹配返回null。返回的數(shù)組Array中,第一項(xiàng)是與整個(gè)模式匹配的字符串,其他項(xiàng)是與模式中的捕獲組匹配到的字符串。數(shù)組Array中還有兩個(gè)參數(shù)input(返回要匹配的字符串),index(返回匹配項(xiàng)在字符串中的位置) 模式中的捕獲組就是指圓括號(hào)中的字符串。
例如:
var e = /do(es)(d)?/; e.exec("ssdoesdo"); /** array[0]:"doesd", array[1]:"es", array[2]:"d", index:2, input:"ssdoesdo" **/
例子中,模式中包含兩個(gè)捕獲組”es”、”d”,即圓括號(hào)中的字符串。
2.test()方法
test()方法檢索字符串中指定的值,該方法接收一個(gè)參數(shù),如果字符串中含有與模式匹配的文本則返回true,否則返回false。
例如:
var e = /do(es)?/; e.test("doesdo"); //true
如果正則表達(dá)式中帶有g(shù)標(biāo)識(shí)符,則每一次調(diào)用test方法和exec方法都從上一次匹配結(jié)束位置開始匹配;如果正則表達(dá)式中沒有g(shù)標(biāo)識(shí)符,則每次調(diào)用方法都從字符串起始位置開始匹配。
例如:
var e = /do(es)?/g; e.exec("ssdoesdoesdoes"); /* array[0]:"does", array[1]:"es", index:2, input:"ssdoesdoesdoes" */ e.exec("ssdoesdoesdoes"); /* array[0]:"does", array[1]:"es", index:6, input:"ssdoesdoesdoes" */
var e = /do(es)?/g; console.log(e.test("ssdoesdoesdoes")); console.log(e.lastIndex); //true //6 console.log(e.test("ssdoesdoesdoes")); console.log(e.lastIndex); //true //10 console.log(e.test("ssdoesdoesdoes")); console.log(e.lastIndex); //true //14
var e = /do(es)?/; console.log(e.test("ssdoesdoesdoes")); console.log(e.lastIndex); //true //0 console.log(e.test("ssdoesdoesdoes")); console.log(e.lastIndex); //true //0
五、常用的幾種正則校驗(yàn)表達(dá)式
1.匹配手機(jī)號(hào)
/^1[34578]\d{9}$/
2.匹配正整數(shù)
/^[0-9]\d*$/
3.匹配ip地址
/^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/
4.匹配郵箱
/^(\w-*\.*)+@(\w-?)+(\.\w{2,})+$/
5.匹配身份證
/^(\d{14}|\d{17})(\d|[xX])$/
其他:
el-input中不允許輸入特殊字符
const handleInput = (data: any) => { data.name = data.name.replace( /[-~#()|【-】· (){}+=*^&%$@!.,,。<>;::;‘'“”、'"?`\\/\\]/g, '', ); };
總結(jié)
到此這篇關(guān)于VUE正則表達(dá)式的文章就介紹到這了,更多相關(guān)VUE正則表達(dá)式內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
關(guān)于element中el-cascader的使用方式
這篇文章主要介紹了關(guān)于element中el-cascader的使用方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-08-08基于Vue實(shí)例對(duì)象的數(shù)據(jù)選項(xiàng)
下面小編就為大家?guī)硪黄赩ue實(shí)例對(duì)象的數(shù)據(jù)選項(xiàng)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-08-08Vue3使用dataV報(bào)錯(cuò)問題的解決方法
這篇文章主要為大家詳細(xì)介紹了Vue3中使用dataV報(bào)錯(cuò)問題的解決方法,文中的示例代碼講解詳細(xì),具有一定的學(xué)習(xí)價(jià)值,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2023-11-11