柚子快報(bào)激活碼778899分享:API-正則表達(dá)式
柚子快報(bào)激活碼778899分享:API-正則表達(dá)式
學(xué)習(xí)目標(biāo):
掌握正則表達(dá)式
學(xué)習(xí)內(nèi)容:
`
什么是正則表達(dá)式語(yǔ)法元字符修飾符
什么是正則表達(dá)式:
正則表達(dá)式是用于匹配字符串中字符組合的模式。在JavaScript中,正則表達(dá)式也是對(duì)象。
通常用來查找、替換那些符合正則表達(dá)式的文本,許多語(yǔ)言都支持正則表達(dá)式。
使用場(chǎng)景
例如驗(yàn)證表單:用戶名表單只能輸入英文字母、數(shù)字或者下劃線,昵稱輸入框中可以輸入中文(匹配)
比如用戶名: /^[a-zA-Z0-9-_]{6,16}$/
過濾掉頁(yè)面內(nèi)容中的一些敏感詞(替換),或從字符串中獲取我們想要的特定部分(提?。┑取?/p>
小結(jié)
正則表達(dá)式用于匹配字符串中字符組合的模式正則表達(dá)式的作用表單驗(yàn)證(匹配);過濾敏感詞(替換);字符串中獲取我們想要的部分(提?。?/p>
語(yǔ)法:
JavaScript中定義正則表達(dá)式的語(yǔ)法有兩種,我們先學(xué)習(xí)其中比較簡(jiǎn)單的方法:
1.定義正則表達(dá)式語(yǔ)法
const 變量名 = /表達(dá)式/
其中/ / 是正則表達(dá)式字面量。
比如:
const reg = /前端/
2.判斷是否有符合規(guī)則的字符串
test()方法 :用來查看正則表達(dá)式與指定的字符串是否匹配。
regObj.test(被檢測(cè)的字符串)
比如:
const str = '要堅(jiān)持努力學(xué)習(xí)前端,加油,加油'
//正則表達(dá)式使用:
//1. 定義規(guī)則
const reg = /前端/
//2.是否匹配
console.log(reg.test(str)) //true
如果正則表達(dá)式與指定的字符串匹配,返回true,否則false。
小結(jié)
正則表達(dá)式使用分為幾步?
1.定義正則表達(dá)式
2.檢測(cè)查找是否匹配
檢索(查找)符合規(guī)則的字符串
exec()方法:在一個(gè)指定字符串中執(zhí)行一個(gè)搜索匹配。
regObj.exec(被檢測(cè)的字符串)
比如:
const str = '要堅(jiān)持努力學(xué)習(xí)前端,加油,加油'
//正則表達(dá)式使用:
//1. 定義規(guī)則
const reg = /前端/
//2.是否匹配
// console.log(reg.test(str)) //true
//3.exec()
console.log(reg.exec(str)) //返回?cái)?shù)組
如果匹配成功,exec()方法返回一個(gè)數(shù)組,否則返回null。
小結(jié)
正則表達(dá)式檢測(cè)查找區(qū)別test()方法用于判斷是否有符合規(guī)則的字符串,返回的是布爾值。找到返回true,否則false。exec()方法用于檢索(查找)符合規(guī)則的字符串,找到返回?cái)?shù)組,否則為null。
元字符:
普通字符
大多數(shù)的字符僅能夠描述它們本身,這些字符稱作普通字符。
例如所有的字母和數(shù)字。
也就是說普通字符只能夠匹配字符串中與它們相同的字符。
元字符(特殊字符)
是一些具有特殊含義的字符,可以極大提高了靈活性和強(qiáng)大的匹配功能。
比如,規(guī)定用戶只能輸入英文26個(gè)英文字母,普通字符的話 abcdefghijklm…
但是換成元字符寫法:[a-z]
小結(jié)
元字符是一些具有特殊含義的字符,可以極大提高了靈活性和強(qiáng)大的匹配功能好處比如英文26個(gè)字母,我們使用元字符[a-z]簡(jiǎn)潔和靈活。
元字符-邊界符: 表示位置,開頭和結(jié)尾,必須用什么開頭,用什么結(jié)尾。
正則表達(dá)式中的邊界符(位置符)用來提示字符所處的位置,主要有兩個(gè)字符。
邊界符說明^表示匹配行首的文本(以誰(shuí)開始)$表示匹配行尾的文本(以誰(shuí)結(jié)束)
如果 ^ 和$在一起,表示必須是精確匹配。
//1.邊界符
console.log(/^哈/.test('哈')) //true
console.log(/^哈/.test('哈哈')) //true
console.log(/^哈/.test('五哈')) //false
console.log(/^哈$/.test('哈')) //true 只有這個(gè)情況為true,否則全是false
console.log(/^哈$/.test('哈哈'))//false
console.log(/^哈$/.test('五哈'))//false
元字符-量詞: 表示重復(fù)次數(shù)。
量詞用來設(shè)定某個(gè)模式出現(xiàn)的次數(shù)。
量詞說明*重復(fù)零次或更多次+重復(fù)一次或更多次?重復(fù)零次或一次{n}重復(fù)n次{n,}重復(fù)n次或更多次{n,m}重復(fù)n到m次
注意:逗號(hào)左右兩側(cè)千萬不要出現(xiàn)空格。
//量詞 * 類似 >=0 次
console.log(/^哈$/.test('哈'))//true
console.log(/^哈*$/.test(''))//true
console.log(/^哈*$/.test('哈'))//true
console.log(/^哈*$/.test('哈哈'))//true
console.log(/^哈*$/.test('五哈很傻'))//false
console.log(/^哈*$/.test('哈很傻'))//false
console.log(/^哈*$/.test('哈很哈'))//false
console.log('--------------')
//量詞 + 類似 >=1 次
console.log(/^哈$/.test('哈'))//true
console.log(/^哈+$/.test(''))//false
console.log(/^哈+$/.test('哈'))//true
console.log(/^哈+$/.test('哈哈'))//true
console.log(/^哈+$/.test('五哈很傻'))//false
console.log(/^哈+$/.test('哈很傻'))//false
console.log(/^哈+$/.test('哈很哈'))//false
console.log('--------------')
//量詞 ? 類似 0 || 1
console.log(/^哈?$/.test(''))//true
console.log(/^哈?$/.test('哈'))//true
console.log(/^哈?$/.test('哈哈'))//false
console.log(/^哈?$/.test('五哈很傻'))//false
console.log(/^哈?$/.test('哈很傻'))//false
console.log(/^哈?$/.test('哈很哈'))//false
console.log('--------------')
// 量詞 {n} 寫幾,就必須出現(xiàn)幾次
console.log(/^哈{4}$/.test('哈')) //false
console.log(/^哈{4}$/.test('哈哈')) //false
console.log(/^哈{4}$/.test('哈哈哈')) //false
console.log(/^哈{4}$/.test('哈哈哈哈')) //true
console.log(/^哈{4}$/.test('哈哈哈哈哈')) //false
console.log(/^哈{4}$/.test('哈哈哈哈哈哈')) //false
console.log('--------------')
// 量詞 {n,} >=n
console.log(/^哈{4,}$/.test('哈')) //false
console.log(/^哈{4,}$/.test('哈哈')) //false
console.log(/^哈{4,}$/.test('哈哈哈')) //false
console.log(/^哈{4,}$/.test('哈哈哈哈')) //true
console.log(/^哈{4,}$/.test('哈哈哈哈哈')) //true
console.log(/^哈{4,}$/.test('哈哈哈哈哈哈')) //true
console.log('--------------')
// 量詞 {n,m} 逗號(hào)左右兩側(cè)千萬不能有空格 >=n && <= m
console.log(/^哈{4,6}$/.test('哈')) //false
console.log(/^哈{4,6}$/.test('哈哈')) //false
console.log(/^哈{4,6}$/.test('哈哈哈')) //false
console.log(/^哈{4,6}$/.test('哈哈哈哈')) //true
console.log(/^哈{4,6}$/.test('哈哈哈哈哈')) //true
console.log(/^哈{4,6}$/.test('哈哈哈哈哈哈')) //true
console.log(/^哈{4,6}$/.test('哈哈哈哈哈哈哈')) //false
元字符-字符類: 比如\d 表示0~9。
1.[ ] 匹配字符集合 后面的字符串只要包含abc中任意一個(gè)字符,都返回true。
// 字符類 [abc] 只選1個(gè)
console.log(/^[abc]$/.test('a')) // true
console.log(/^[abc]$/.test('b')) // true
console.log(/^[abc]$/.test('c')) // true
console.log(/^[abc]$/.test('ab')) // false
console.log(/^[abc]{2}$/.test('ab')) // true
2.[ ] 里面加上 - 連字符:[A-Z] 使用連字符 - 表示一個(gè)范圍。
console.log(/^[A-Z]$/.test('P')) // true
比如:
[a-z]表示a到z26個(gè)英文字母都可以[a-zA-Z]表示大小寫都可以[0-9]表示0~9的數(shù)字都可以
// 字符類 [a-z] 只選1個(gè)
console.log(/^[A-Z]$/.test('p')) // false
console.log(/^[A-Z]$/.test('P')) // true
console.log(/^[0-9]$/.test(2)) // true
console.log(/^[a-zA-Z0-9]$/.test(2)) // true
console.log(/^[a-zA-Z0-9]$/.test('p')) // true
console.log(/^[a-zA-Z0-9]$/.test('P')) // true
3.[ ]里面加上^取反符號(hào):[^a-z]
比如:
[^a-z]匹配除了小寫字母以外的字符注意要寫到中括號(hào)里面-
4..匹配除換行符之外的任何單個(gè)字符。
小結(jié)
字符類.(點(diǎn))匹配除換行符之外的任何單個(gè)字符[abc]匹配abc其中的任何單個(gè)字符[a-z]匹配26個(gè)小寫英文字母其中的任何單個(gè)字符[^a-z]匹配除了26個(gè)小寫英文字母之外的其他任何單個(gè)字符
練習(xí)
5.預(yù)定義:指的是某些常見模式的簡(jiǎn)寫方式。
預(yù)定類說明\d匹配0~9之間的任一數(shù)字,相當(dāng)于[0-9]\D匹配所有0~9以外的字符,相當(dāng)于[^0-9]\w匹配任意的字母、數(shù)字和下劃線,相當(dāng)于[A-Za-z0-9_]\W除所有字母、數(shù)字、下劃線以外的字符,相當(dāng)于[^A-Za-z0-9_]\s匹配空格(包括換行符、制表符、空格符等),相當(dāng)于[\t\r\n\v\f]\S匹配非空格的字符,相當(dāng)于[^\t\r\n\v\f]
修飾符:
修飾符約束正則執(zhí)行的某些細(xì)節(jié)行為,如是否區(qū)分大小寫、是否支持多行匹配等。
/表達(dá)式/修飾符
i正則匹配時(shí)字母不區(qū)分大小寫g匹配所有滿足正則表達(dá)式的結(jié)果
console.log(/^java$/.test('java')) //true
console.log(/^java$/i.test('JAVA')) //true
console.log(/^java$/i.test('Java')) //true
替換 replace替換
字符串.replace(/正則表達(dá)式/,'替換的文本')
練習(xí)
柚子快報(bào)激活碼778899分享:API-正則表達(dá)式
文章鏈接
本文內(nèi)容根據(jù)網(wǎng)絡(luò)資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點(diǎn)和立場(chǎng)。
轉(zhuǎn)載請(qǐng)注明,如有侵權(quán),聯(lián)系刪除。