正则表达式是用于匹配特殊字符和特殊搭配的字符串的强大工具
正则的两种创建方式
- 字面量
格式:/pattern/attributes
var reg = /abc/g //表示全局匹配abc字符串
- 通过new RegExp创建
格式:new RegExp(pattern,attributes)
var reg = new RegExp('abc','g')
说明:
pattern表示正则表达式的模式,即要匹配的规则
attributes是一个可选参数,包括 g i m,分别别表示全局匹配,忽略大小写和多行匹配。默认情况是非全局匹配、不忽略大小写和单行匹配
返回值是一个具有指定模式也标志的RegExp对象,typeof reg 为object
当pattern为不合法正则或者attributes包含gim以外的字符时,会报错syntaxError
下面具体来看一些规则
1. [] 用于查找某个范围内的一个字符
例如:
[abc] 表示查找abc中的任意一个字符
[^abc] 表示查找不是a不是b也不是b的任意一个字符;^在[]里表示非
[0-9] 表示查找从0到9的任意数字,-表示到或至的意思
[a-z] 表示查找a到z的字符
[A-Z] 表示查找A到Z的字符
[A-z] 表示查找A到z的字符
2. 元字符 表示拥有特殊含义的一个字符
例如:
. 表示任意一个字符,除换行;可用\.
表示"."这一个字符
\w 表示单词字符
\W表示非单词字符
\d 表示数字字符
\D 表示非数字字符
\s 表示查找空白字符
\S 表示查找非空白字符
\n 换行
\r 回车符
\t 制表符
\uxxxx 表示十六进制的数xxxx所对应的Unicode字符
3. () 用于表示某组正则规则,可以作为整体被修饰,也可以供后续调用
小括号括起来的这部份正则表达式可以被当作一个“组”。这个组可以作为整体被后面的修饰,也可在后续处理中单独获得这一部分正则的匹配结果。小括号将其作为一个组,同时记下了匹配的结果。正则表达式 \n
表示“第N个组”的结果,因为一个正则表达式中可能有多个小括号扩起的组,所以用 \1 \2 \3 等来分别代表之前的第1组第2组第3组。
4. 量词 表示字符出现的数量
+ 表示一个到多个
* 表示0个到多个
? 表示存0个或1个
{x} 表示出现x个的字符串
{x,y} 表示x个到y个的字符串
{x,} 表示x个到infinity个的字符串
$ 表示以什么结尾的字符串,比如/n$/表示以n结尾的字符串
^ 表示以什么开头的字符串,比如/^n/表示以字母n开头的字符串
?= 表示后面紧接某字符串的字符串,比如/?=n/表示后面紧接字母n的字符串
?! 表示后面不紧接某字符串的字符串,比如/?!n/匹配后面不紧接n的字符串
| 表示或者,例如(x|y) 匹配x或者y
5. 正则对象常用方法
- compile() 编译和改变正则
- test() 用于检测某字符串是否包含正则表达式所表示的字符串。返回true或false
- exec() 检测某字符串是否包含正则表达式所表示的字符串,返回一个对象,这个对象记录了找到的值和第一次出现的位置 index下标
6. 包装类字符串对象身上的常用方法(与正则相关的)
- 在replace() 中使用正则
表示替换字符串中通过正则匹配的子串
var str = "Visit Microsoft!";
var res = str.replace(/microsoft/i, "W3School");
//res 的结果将是:Visit W3School!
- search 查找字符串中与正则相匹配的子字符串在字符串中的索引位置,没有匹配到返回-1
- match 用于返回与正则相匹配的子串,返回子串组成的类数组
网友评论