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