19.1什么是正則表達式
●正則表達式( Regular Expression) 是用于匹配字符串中字符組合的模式。在JavaScript中, 正則表達式也是對象
●通常用來查找、替換那些符合正則表達式的文本,許多語言都支持正則表達式
●正則表達式在JavaScript中的使用場景:
?例如驗證表單:用戶名表單只能輸入英文字母、數字或者下劃線,昵稱輸入框中可以輸入中文(匹配)
?比如用戶名:/ ^[a-z0-9_ -]{3,16}$/
?過濾掉頁面內容中的一-些敏感詞(替換),或從字符串中獲取我們想要的特定部分(提取)等。
19.2語法
JavaScript中定義正則表達式的語法有兩種,比較簡單的一種方法:
1.定義正則表達式語法:
const變量名= /表達式/
?其中/ /是正則表達式字面量
●比如:
const reg = /前端/
2.判斷是否有符合規則的字符串:
test() 方法 用來查看正則表達式與指定的字符串是否匹配
●語法:
reg.test(被檢測的字符串)
●比如:
●如果正則表達式與指定的字符串匹配,返回true,否則false
3.檢索(查找)符合規則的字符串:
exec() 方法 在一個指定字符串中執行一個搜索匹配
●語法:
regObj.exec(被檢測字符串)
●比如:
●如果匹配成功,exec() 方法返回一個數組,否則返回null
19.3元字符
●普通字符:
大多數的字符僅能夠描述它們本身,這些字符稱作普通字符,例如所有的字母和數字。
也就是說普通字符只能夠匹配字符串中與它們相同的字符。
●元字符(特殊字符)
是一些具有特殊含義的字符,可以極大提高靈活性和強大的匹配功能
?比如,規定用戶只能輸入英文26個英文字母,普通字符的話abcdefghijklm…
?但是換成元字符寫法: [a-z]
●參考文檔:
MDN:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Guide/Regular_Expressions
正則測試工具: http://tool.oschina.net/regex
1.邊界符
●正則表達式中的邊界符 (位置符) 用來提示字符所處的位置,主要有兩個字符
如果^和 $ 在一起,表示必須是精確匹配。
【例如】
console.log(/^哈/.test('哈')) //true
console.log(/^哈/.test('2哈')) //false
console.log(/^哈$/.test('哈')) //true
console.log(/^哈$/.test('哈哈')) //false
2.量詞
量詞用來設定某個模式出現的次數
注意:逗號左右兩側千萬不要出現空格
3.字符類:
(1) [ ] 匹配字符集合
●后面的字符串只要包含abc中任意一個字符,都返回true
(2) [ ] 里面加上-連字符
●使用連字符表示一個范圍
console.log(/^[a-z]$/.test('c')) // true
●比如:
?[a-z] 表示a到z 26個英文字母都可以
?[a-zA-Z] 表示大小寫都可以
?[0-9] 表示0~9的數字都可以
●比如:
騰訊QQ號: ^[1-9][0-9]{4,}$
(騰訊QQ號從10000開始)
(3) [ ] 里面加上^取反符號
●比如:
?[^a-z]
匹配除了小寫字母以外的字符
?注意要寫到中括號里面
(4) . 匹配除換行符之外的任何單個字符
(5)預定義:指的是某些常見模式的簡寫方式。
19.4修飾符
●修飾符約束正則執行的某些細節行為,如是否區分大小寫、是否支持多行匹配等
●語法:
/表達式/修飾符
?i是單詞ignore的縮寫,正則匹配時字母不區分大小寫
?g是單詞global的縮寫,匹配所有滿足正則表達式的結果
console.log(/a/i.test('a')) // true
console.log(/a/i.test('A')) // true
●替換replace替換
●語法:
字符串.replace(/正則表達式/,'替換的文本')