regExp
转义字符 : **
回车 相当于一个 \r\n
\n 换行
\r 行结束符
\t 制表符
正则表达式的作用
匹配特殊字符或有特殊搭配原则的字符的最佳选择。
reg.test(str) 测试方法
var reg = /abc/i || var reg = new RegExp(‘规则’ , ‘方法’)
如果不加new 的话 引用同一个方法,指向同一房间
规则:(贪婪匹配)
/ ^ a/ :以a开头
i : 会略大小写;
g: 执行全局匹配;
m:执行多行匹配;
表达式:
[] 一个表达式代表一个区间;
[0-9A-z] [cd]…
如果尖角号写在表达式内,如:
/【^a】/ 表示不是以a开头的 取非
var reg = / [0-9][0-9][0-9]/g
()也算一个表达式
/(abc | bcd)/ 匹配abc 或者bcd
元字符:特殊含义的字符
\w === [ 0-9A-z_ ]
\W === [ ^\w ]
\d === [ 0-9 ]
\D === [ ^\d ]
可以查找空白字符
\s === \n换行符 , \f 换页符, \r 回车符, \t 制表符, \v垂直制表符 , 还有空格
\S === [ \s ]
\b === 单词边界
\B === 非单词边界
. === [ ^\r\n]
量词:
n+ : 代表这个变量可以出现1到无数次;
n* : 0-正无穷
n? : 0或者1个
n{x} : 匹配 x 个
n{x,y} : 匹配x-y个
^n : 以n为开头
n$ : 以n为结尾
如 :
var reg = / \w+ /g | / \w* / g
正则表达式的属性
global : regexp对象是否具有标志g;
ignoreCase : regexp对象是否具有标志i;
source : 查看regexp的规则;
test : 检索字符串中指定的值,返回true 或 false;
exec :
lastIndex : 一个整数,标志开始下一次匹配字符的位置;
exec方法基于lastIndex方法实现,如果全局g,安索引位向后查找;
正向预查
? = n
var reg = / a(? = b )/g;匹配a后面是b的字符;
? ! b
var reg = / a(? ! b )/g; 匹配a后面不是b的字符;
非贪婪匹配
var reg = / a+ /g; 贪婪匹配
扩展知识
var reg = / (\w)\1 /
括号里面的代表子表达式,写在()里他会保存引用,然后 \1 代表反向引用 ,就可以实现匹配连续出现的字符
字符串方法:
split(‘a’) : 以a拆分字符串
replace(‘a’, ‘b’)字符串替换方法,缺能替换全局,找到就停止;我们可以利用正则表达式方法;
第二个参数还可以写方法如:
str.replace(reg, function (第一个参数$(全局), 第二个参数 $(1,2…匹配字符引用, 可以写多个引用参数)) {
})
str.match()
实现 形如’aabb’的字符串,反向输出’bbaa’
toUpperCase() : 返回大写
toLowerCase() : 返回小写