转义字符和元字符
转义字符\,在反斜杠\后边放的紧挨着得字符被强制转化成文本
元字符是拥有特殊含义的字符,元字符也可以组合放进中括号里去使用,一个元字符代表一位
"-----实现在双引号里再放双引号
\r-----行结束符,即回车
\t-----制表符,键盘得tab键
.-----表示点.
\n-----实现换行
\s------表示空白字符
\S------表示非空白字符
\d------表示数字
\D-----表示非数字
\d\D或者\w\W-----表示任意字符
\w------常用字符(英文,数字),小写w
\W-------非常用字符(下划线,感叹号等),大写W
.--------(点号)查找单个字符,除了换行和行结束符
正则表达式
正则表达式属于字符串的相关操作,表达的意义是一种规则,在js中是一种对象。
创建语法
1.直接量
在两个斜杠中间写规则,在正则表达式得双斜杠后边还可以加字母i、g、m,表达其属性
2.构造方法RegExp()
在new RegExp("abc")函数里边也可以添加属性i、g、m
- 使用new操作符,可以将已经存在的正则表达式用来给函数RegExp()传参,构造新的正则表达式。两个正则对象值相同,但两个对象相互独立。
2)若去除new操作符,将已经存在的正则表达式用来给函数RegExp()传参,只是传递引用,不能构建新的正则表达式。两个标识符只是对同一个正则表达式的引用。
正则表达式的属性
i:执行匹配时忽略大小写
g:执行全局匹配(查找所有匹配而非在找到第一个匹配后停止)
m:执行多行匹配
source 字面量形式对应的字符串
lastIndex 开始搜索下一个匹配项的字符位置,默认0。lastIndex 与exec 方法相搭配使用,查找光标位置。
正则表达式的规则
1.^表示以什么开头,$表示以什么结尾
2.中括号用于查找某个范围内的字符,一个中括号代表一位,中括号里边的内容代表的是这一位可以取值的范围。
取出3个字符,第1个字符的范围是a-z,第2个字符的是c-d,第3个字符就是d。
3.^放到[]里边表示"非"
第1位不能是a,第2位不能是b
4.括号里可以加入"|"表示"或"
5.量词,表达式的n代表的是一个匹配规则,n后边符号的符号定义量词规则
n+表示{1,Infinity}个即1个以上
n*表示{0,Infinity}个即0个以上
n?表示(0,1)个即0个或1个。
6.\num 表示反引用,指的是要引用的第num个括号里的表达式值
var reg=/(\w)\1/g;//括号"()"后边的"\1"为反向引用第一个括号的值
reg=/(\w)\1\1\1/g;//3个"\1"代表后边还要引用第一个括号里的值3次
//反斜杠 “\num”反向引用括号里的值
var str="fafakfFAbab";
//XYXY reg=/([a-z0-9])([a-z0-9])\1\2/
var reg=/([a-z0-9])([a-z0-9])\1\2/gi;
console.log(str.match(reg));
//将匹配得到的XYXY类型的字符串,替换为XXYY类型
//在replace中应用正则表达式,需要用“$num”表示反向应用
console.log(str.replace(reg,"$1$1$2$2"));
位置限定条件和反斜杠意义
S(?=n):匹配任何其后紧接指定字符串n 的字符串S
S(?!=n):匹配任何其后没有紧接指定字符串n 的字符串S
var str="7a6b2727";
var reg=/\d(?=[a-z])/ig
console.log(str.match(reg));
在验证特殊字符时,需要加反斜杠,在正则表达式中将其转义为普通字符
var reg=/\d\*/;
var str="2*3+7";
console.log(str.match(reg));
正则表达式相关的方法
字符串的方法
1.split():可以将一个字符串拆分成一个数组。方法中可以传递一个正则表达式作为参数,这样方法将会根据正则表达式去拆分字符串,这个方法即使不指定全局匹配也会全部拆分。
2.match():找到一个或多个正则表达式的匹配。默认情况下match只会找到第一个符合正则表达式的内容,找到以后就会停止搜索,可以设置正则表达式为全局匹配模式,这样就能匹配到所有。(在正则表达式后边加上修饰符g)match会将匹配到的内容封装到一个数组中返回,即使只查询到一个结果。
3.replace():替换与正则表达式匹配的子串。参数:第1个是被替换的内容,第2个是新的内容(如果是空串就是删除)。默认只替换第一个,可以设置正则表达式为全局匹配模式,这样就能匹配到所有。(在正则表达式后边加上修饰符g)
search():检索与正则表达式相匹配的值。搜索字符串中是否含有指定内容,如果搜索到指定内容,则会返回第一次出现的索引,如果没有搜索到则返回-1。它可以接受一个正则表达式作为参数,然后会根据正则表达式去检索字符串,search只会查找第一个,即使设置全局匹配也没用
正则表达式的方法
1.exec():寻找字符串中是否含有检测的字符。将找到的字符按数组返回。尽管具有global属性,仍然只返回匹配到的第一个。
2.test():检测字符串中是否含有检测的字符。返回布尔值