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)

总结

以上的所有方法并不会改变调用它的字符串 | 正则表达式,记得它们如何使用和返回值即可

猜你喜欢

转载自blog.csdn.net/weixin_41105030/article/details/85230805