JS正則表示式中常用的方法
阿新 • • 發佈:2019-01-04
正則常用的符號知識點
- 限定符
* 表示前面的表示式出現0次到多次{0,}
+ 表示前面的表示式出現一次到多次{1,}
? 最少0次,最多一次(可以阻止貪婪模式){0,1}
{} 更加明確的表示前面的表示式出現的次數
- 其它
. 表示的是除了 \n以外的任意一個字元
[] 表示範圍
[1-9] 表示一到九的任意一個數字
[0-9a-zA-Z] 表示所有的數字或則字母中的一個
| 或則
[0-9]|[a-z] 要麼是一個數字,要麼是一個英文字母
() 分組或提高優先順序
^ 表示以什麼開頭,或則取反
^[a- z] 以小寫字母開頭
[^0-9] 非數字
$ 表示以什麼結束
[a-z][0-9]以數字結束
\d 任意一個數字
\D 非數字
\s 空白符
\S 非空白符
\w 非特殊字元 [0-9a-zA-Z_.-]
\W 特殊字元
\b 單詞邊界
\B 非單詞邊界
常用的一些方法
exec
一個在字串中執行查詢匹配的RegExp方法,它返回一個數組(未匹配到則返回null)
var reg1= /^\w+$/
var str = 'w111fafdd'
console.log(reg1.exec(str))
// ["w111fafdd", index: 0, input: "w111fafdd", groups: undefined]
- 跟match的結果有點像,但是match匹配到多個時可以返回一個滿足匹配規則所有字串的陣列
- 第一個引數是返回能夠匹配正則規則的字串,則案例的非特殊字元
- input屬性的值是原來的字串,即str
- 結果的index表示從第幾個字串開始匹配到的
test
一個在字串中測試是否匹配的RegExp方法,它返回true或false
接著上面的程式碼
console.log(reg1.test(str)) // true
search
一個在字串中測試匹配的String方法,它返回匹配到的位置索引,或者在失敗時返回-1。
接著上面程式碼
console.log(str.search(reg1)) // 0
match
一個在字串中執行查詢匹配的String方法,它返回一個數組或者在未匹配到時返回null。
console.log(str.match(reg1))
//["w111fafdd", index: 0, input: "w111fafdd", groups: undefined]
跟上面exec除了呼叫的物件和引數不同,結果是一樣,當一個字串多個能匹配正則表示式規則時,match返回時不同的
案例:提取工資
需求:var str = ‘張三:1000,李四:5000,王五:8000。’;提取他們三人的工資並返回一個數組
- 使用提取組的方法
var str = '張三:1000,李四:5000,王五:8000。';
// 寫一個匹配它們的正則表示式
var reg = /(\d+)/g
// 使用陣列用來裝他們
var arr = []
while(reg.test(str)){
arr.push(RegExp.$1) //$1是提取第一個組的意思,如果上面的正則表示式的括號沒加,則提取是空的字串,因為沒有分組
}
console.log(arr) //["1000", "5000", "8000"]
- 我們可以使用一個match就可以搞定了
var str = '張三:1000,李四:5000,王五:8000。';
var reg = /\d+/g
console.log(str.match(reg))// ["1000", "5000", "8000"]
replace
一個在字串中執行查詢匹配的String方法,並且使用替換字串替換掉匹配到的子字串
- str.replace(parame1,parame2);就是將parame1替換成parame2
- 去字串的所有空格
trim()這個方法只能去掉前後的空格,當要去掉字串所有的空格時,使用replace替換掉所有的空格
var str = " 123AD asadf asadfasf adf "
var str1 = str.replace(/\s+/g,'')
console.log(str1)
// 123ADasadfasadfasfadf
split
一個使用正則表示式或者一個固定字串分隔一個字串,並將分隔後的子字串儲存到陣列中的String方法
- 我們之前使用split()時大部分是將字串切割為陣列,括號跟著的是一個字串
var dateStr = '2015-1-5';
var arr = dateStr.split('-')
console.log(arr)
// ["2015", "1", "5"]
- 引數為正則表示式
接著上面的程式碼
var arr1 = dateStr.split(/[-]/)
console.log(arr1)
總結
以上的所有方法並不會改變呼叫它的字串 | 正則表示式,記得它們如何使用和返回值即可