1. 程式人生 > >JS正則表示式中常用的方法

JS正則表示式中常用的方法

正則常用的符號知識點

  1. 限定符
*  表示前面的表示式出現0次到多次{0,}
+  表示前面的表示式出現一次到多次{1,}
?  最少0次,最多一次(可以阻止貪婪模式){0,1}
{}  更加明確的表示前面的表示式出現的次數
  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]
  1. 跟match的結果有點像,但是match匹配到多個時可以返回一個滿足匹配規則所有字串的陣列
  2. 第一個引數是返回能夠匹配正則規則的字串,則案例的非特殊字元
  3. input屬性的值是原來的字串,即str
  4. 結果的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。’;提取他們三人的工資並返回一個數組

  1. 使用提取組的方法
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"]
  1. 我們可以使用一個match就可以搞定了
var str = '張三:1000,李四:5000,王五:8000。';
var reg = /\d+/g 
console.log(str.match(reg))// ["1000", "5000", "8000"] 

replace

一個在字串中執行查詢匹配的String方法,並且使用替換字串替換掉匹配到的子字串

  1. str.replace(parame1,parame2);就是將parame1替換成parame2
  2. 去字串的所有空格
    trim()這個方法只能去掉前後的空格,當要去掉字串所有的空格時,使用replace替換掉所有的空格
var str = "   123AD  asadf     asadfasf  adf "
var str1 = str.replace(/\s+/g,'')
console.log(str1)
// 123ADasadfasadfasfadf

split

一個使用正則表示式或者一個固定字串分隔一個字串,並將分隔後的子字串儲存到陣列中的String方法

  1. 我們之前使用split()時大部分是將字串切割為陣列,括號跟著的是一個字串
var dateStr = '2015-1-5';
	var arr = dateStr.split('-')
	console.log(arr)
	// ["2015", "1", "5"]
  1. 引數為正則表示式
    接著上面的程式碼
var arr1 = dateStr.split(/[-]/)
console.log(arr1)

總結

以上的所有方法並不會改變呼叫它的字串 | 正則表示式,記得它們如何使用和返回值即可