JavaScript正则表达式详解
正则表达式的概述
正则表达式(Regular Expression)是一个描述字符模式的对象,用于对字符串进行匹配, 一般用在有规律的字符串匹配中,常用于表单验证以及相关的字符串匹配。正则表达式是匹配模式,要么匹配字符,要么匹配位置。
正则对象的声明
1.使用字面量来声明(常用的)
var regx = /a/ //表示匹配a //字符串支持正则的方法 replace split search match var str = 'abcdef' console.log(str.match(regx)); regx = /a/i console.log('ABC'.match(regx));
2.使用new关键词来声明
//使用new关键词 参数一是匹配的对应的正则表达式 参数二模式 //i表示不区分大小写 g表示全局搜索 var regx1 = new RegExp('a','i') var str1 = 'ABC' console.log(str1.match(regx1));
正则修饰符
g :表示全局匹配,即在目标字符串中按顺序找到满足匹配模式的所有子串,强调的是“所有”,而不只是“第一个”。g是单词global的首字母。
i :不区分大小写
m :换行模式
正则匹配的元字符
1.量词
{} 表示个数
var regx2 = /[a-z]{6}/ //表示6个小写的字母 regx2 = /[a-z]{0}/ //表示0个字母 regx2 = /[a-z]{1,3}/ //表示1个到3个 regx2 = /[a-z]{1,}/ //表示1个到无穷个
{n} 表示n个
{n,m} 表示n个到m个
{n,} 表示n个到无穷个
简写形式:
// + 表示一个到多个 {1,} // * 表示0个到多个 {0,} // ? 表示0个到一个 {0,1}
2.模糊匹配
- [ ] 表示里面任意的一个元素:放置在里面的元字符不会被识别,而是当做普通字符
[abc]
,表示该字符是可以字符“a”、“b”、“c”中的任何一个。比如
/a[123]b/
可以匹配如下三种字符串:"a1b"、"a2b"、"a3b"
-
^ 表示开头
-
$ 表示结尾
-
.
表示通配符,表示任意字符(包括中文字符) -
\w 表示对应的字母数字下滑线 \W 就是相反的 不是字母数字下滑线
-
\d 表示数字 \D表示非数字
-
\s 表示空白字符串(回车 制表 空格) \S就是相反的 不是空白字符
-
\ 转义 :匹配 ? * + . 等元字符要使用转义
//匹配 ? * + .等元字符 转义\ var regx10 = /^[?]$/ console.log('?'.match(regx10)); var regx10 = /^[*]$/ console.log('*'.match(regx10)); //用转义字符来 var regx10 = /^\*$/ console.log('*'.match(regx10)); var regx10 = /^\.$/ console.log('.'.match(regx10));
3.多选分支
使用 | 来进行选择 找到组内对应的某一个就返回
要匹配"good"和"nice"可以使用/good|nice/
var regex = /good|nice/g; var string = "good idea, nice try."; console.log( string.match(regex) ); //["good","nice"]
4.分组
使用()来进行分组
var reg = /aaa/ var reg2 = /(a){3}/ //reg 和 reg2 效果相同
也可以将分组和选择共同使用
var reg = /I Like (basketball|football|table tennis)/ console.log(reg.test('I Like basketball')); //true console.log(reg.test('I Like football')); //true console.log(reg.test('I Like table tennis')); //true
正则的检测方法
test 测试 返回一个boolean类型值(是否匹配)
var regx = /\w/ console.log(regx.test('abc')) //true
exec 执行 返回给你一个对应的匹配的数组(如果有就返回一个数组)
var regx = /\d/ console.log(regx.exec('123')) //[1,2,3]
字符串支持正则的4个方法
-
split 切割
-
replace 替换
-
search 查找
-