正則表達(dá)式規(guī)則
1.常用元字符
表達(dá)式 | 可匹配 |
---|---|
\d | 任意一個(gè)數(shù)字,0~9 中的任意一個(gè) |
\w | 任意一個(gè)字母或數(shù)字或下劃線扯罐,也就是 A-Z,a-z,0~9,_ 中任意一個(gè) |
\s | 包括空格、制表符烦衣、換頁(yè)符等空白字符的其中任意一個(gè) |
. | 小數(shù)點(diǎn)可以匹配除了換行符(\n)以外的任意一個(gè)字符 |
\b | 匹配單詞(起始位置必須是各種空白符)的開(kāi)始或結(jié)束 |
^ | 匹配字符串的開(kāi)始 |
$ | 匹配字符串的結(jié)束 |
2.常用的限定符
表達(dá)式 | 說(shuō)明 |
---|---|
* | 重復(fù)零次或更多次 |
+ | 重復(fù)一次或更多次 |
歹河? | 重復(fù)零次或一次 |
{n} | 重復(fù)n次 |
{n,} | 重復(fù)n次或更多次 |
{n,m} | 重復(fù)n次或m次 |
replace () 方法
replace()方法用于在字符串中用一些字符替換另一些字符,或替換一個(gè)與正則表達(dá)式匹配的子串
str.replace(regexp/substr,replacement)
// regexp/substr [必傳]規(guī)定子字符串或要替換的模式的 RegExp 對(duì)象花吟。
// replacement [必傳]一個(gè)字符串值秸歧。規(guī)定了替換文本或生成替換文本的函數(shù)。
返回值為一個(gè)新的字符串
栗子:
let str = '我愛(ài)吃土豆'
console.log(str.replace(/土豆/,'番茄')) // '我愛(ài)吃番茄'
// [g為全局替換衅澈,沒(méi)有g(shù)键菱,則替換第一個(gè)找到的字符串]
let str1 = '土豆、番茄今布、土豆'
console.log(st1r.replace(/土豆/g,'番茄')) // '番茄经备、番茄、番茄'
match () 方法
可在字符串內(nèi)檢索指定的值部默,或找到一個(gè)或多個(gè)正則表達(dá)式的匹配弄喘。
str.match(regexp)
返回值:存放匹配結(jié)果的數(shù)組。該數(shù)組的內(nèi)容依賴于 regexp 是否具有全局標(biāo)志 g甩牺。
如果 regexp 沒(méi)有標(biāo)志 g蘑志,那么 match() 方法就只能在 str中執(zhí)行一次匹配。如果沒(méi)有找到任何匹配的文本贬派, match() 將返回 null急但。否則,它將返回一個(gè)數(shù)組搞乏,其中存放了與它找到的匹配文本有關(guān)的信息波桩。該數(shù)組的第 0 個(gè)元素存放的是匹配文本,而其余的元素存放的是與正則表達(dá)式的子表達(dá)式匹配的文本请敦。除了這些常規(guī)的數(shù)組元素之外镐躲,返回的數(shù)組還含有兩個(gè)對(duì)象屬性储玫。index 屬性聲明的是匹配文本的起始字符在 str 中的位置,input 屬性聲明的是對(duì) str 的引用萤皂。
如果 regexp 具有標(biāo)志 g撒穷,則 match() 方法將執(zhí)行全局檢索,找到 str 中的所有匹配子字符串裆熙。若沒(méi)有找到任何匹配的子串端礼,則返回 null。如果找到了一個(gè)或多個(gè)匹配子串入录,則返回一個(gè)數(shù)組蛤奥。不過(guò)全局匹配返回的數(shù)組的內(nèi)容與前者大不相同,它的數(shù)組元素中存放的是 str 中所有的匹配子串僚稿,而且也沒(méi)有 index 屬性或 input 屬性凡桥。
常用正則場(chǎng)景
1.input框只允許輸入正整數(shù)
if(this.value.length==1){
this.value=this.value.replace(/[^1-9]/g,'')
}else{
this.value=this.value.replace(/\D/g,'')
}
2.只能輸入兩位小數(shù)
function checkInput (value) {
value = value.toString()
value = value.replace(/[^\d.]/g, '') // 清除“數(shù)字”和“.”以外的字符
value = value.replace(/\.{2,}/g, '.') // 只保留第一個(gè). 清除多余的
value = value.replace('.', '$#$').replace(/\./g, '').replace('$#$', '.')
// eslint-disable-next-line
value = value.replace(/^(\-)*(\d+)\.(\d\d).*$/, '$1$2.$3')// 只能輸入兩個(gè)小數(shù)
if (value.indexOf('.') < 0 && value !== '') { // 以上已經(jīng)過(guò)濾,此處控制的是如果沒(méi)有小數(shù)點(diǎn)蚀同,首位不能為類似于 01唬血、02的金額
value = parseFloat(value)
}
return value
}