一些常见的正则表达式

常用的一些方法

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)

量词:+

例如:\d:代表一次 \d\d:代表2次 \d+:代表出现若干次

全局匹配:g

例如:/a/g

任意字符:[abc];

例子:[abc]s————as,bs,cs

范围 [a-z],[0-9]

例子:id[0-9]————id0,id1,id2…id9

排除:[^a] 排除掉a字符

例子:o[^0-9]————oat,o?t,o t

组合

[a-z0-9A-Z] 小写字母或数字或大写字母只能出现一次

转义字符

.(点) 任意字符

\d 数字0-9

\w a-z小写字母 英文、数字、下划线

\s 空白字符

\D [^0-9]

\W [^a-z0-9]

\S 非空白

常用量词

{n} 正好出现n次

例子: \d{8} 数字正好出现8次

[1-9]\d{7} 1到9开头的数字正好出现8次

{n.m} 最少n次 最多m次

例子: [1-9]\d{4,10} 5,10

{n,} 最少n次,最多不限

+ {1,} 最少出现1次 最多不限

? {0,1} 最少0次最多1次 可有可无

例子: 010-87495698-23 (0\d{2,3})?[1-9]\d{7}(-\d{1,5}) 分区可有可无 号码8位 分机1为或5位

* {0,} 可以无也可以无线有

猜你喜欢

转载自blog.csdn.net/weixin_55833412/article/details/129834404
今日推荐