正则表达式方法
1.var reg = /^abcd/g;字面量
2.var reg= new RegExp(/abcd/,'g')构造函数
^ $
let str = /^a$/ 开始结束符的限定
[^] 里面的^表示取反 也就是括号里面有的都返回false
正则表达式方法
reg.test(str) 检测一个字符串是否匹配某个模式 str内是否包含reg true/false
reg.exec();
reg.lastIndex()查找index游标(类数组如下标) 是有全局匹配才会改变g
字符串方法
str.match(reg) 在字符串内检索指定的值,或找到一个或多个正则表达式的匹配。
str.search(reg) 在字符串中检索reg匹配第一个值的下标 没有返回 -1
str.replace(reg) g可以全匹配
var reg = /(\w)\1(\w)\2/g
str = 'aabb'
str.replace(reg,'$2$2$1$1')可以引用方法里面的通过$翻转
str.replace(reg,fn($,$1,$2))第二个参数可以使函数
题目
var str = 'the-first-name';
var reg = /-\w/g;
str.replace(reg,function($,$1) { return $.toUpperCase() }))
字符串不用 RegExp str.replace(a,b)不是全匹配
括号
括号合集
1.大括号
{} 量词
2.中括号
[] 多选一
3.小括号
()优先级
[abc] 没有量词都(单选) a||b||c
let str = /[abc]/ 方括号包含其中任何一个字符都返回true
()优先级
let str = /^abc{3}$/ 让c重复3次
let str = /^(abc){3}$/ 让abc重复3次
预定义类
\d 等价于 [0-9] 匹配数字
\D 等价于 [^0-9] 取反 匹配除了数字之外的字符
\w 等价于 [A-Za-z0-9_] 字母数字下划线
\W 等价于 [^A-Za-z0-9_] 取反 字母数字下划线 之外的数
\s 等价于[\t\r\n\v\f] 匹配空格包含(换行符 制表符 空格符等)
\S 等价于[^\t\r\n\v\f] 匹配非空格符的字符
量词
量词 满足条件true
匹配字符串时字符的长度(贪婪匹配原则
n* * 重复0次或者多次
n+ + 重复1次或者多次
n? ? 重复1次或者0次
中间不要有空格
{n} 自定义n次
{n,} 自定义返回n次或者n次以上
{n,m} 自定义大于等于n且小于等于m的 --> {3,5} 自定义3到5个
非贪婪匹配原则 加问号
{3,5}?有3绝对不取5
let str = /^a*$/ 出现0~无数个a
let str = /^a+$/ 出现1~无数个a
let str = /^a?$/ 出现1 || 0 a
let str = /^a{3}$/ 出现3个a
let str = /^a{3,}$/ 出现3个a及以上的会返回true
let str = /^a{2,4}$/ 出现大于等于2且小于等于4的返回true
str.test('aa')
str.test('aaaaa')
座机号码
\d{3}-\d{8}|\d{4}-\d{7}
g 全局匹配
i 忽略大小写
gi 全局匹配 + 忽略大小写
let num = '1234446';
num.replace(/4|6/g,'*') //123****
正向预查 非正预查
?=n 匹配任何其后紧接指定字符串 n 的字符串。
var reg = /\a(?=b)\/g 查找后面跟着b的a
?!n
var reg = /\a(?!b)\/g 查找后面不跟着b的a