创建:
1.构造函数:var reg = new RegExp(较繁琐,现用下面的)
2.字面量: var reg = / /g(创建对象的方式)
g:global,全文搜索,不添加的话搜索到第一个结果就停止搜索
i:忽略大小写
m:多行搜索
元字符:([{|$|)?*+
预定义类:
| . | 除回车符和换行符之外的任意字符 |
| \d | 数字字符 |
| \D | 非数字字符 |
| \s | 空白符 |
| \S | 非空白符 |
| \w | 单词字符,字母,数字下划线 |
| \W | 非单词字符 |
举几个例子:
var reg = /[a-z]/ig []这个大括号就是区间a到z之间
var reg = /[abcde]/ig 单独匹配abcde这几个
var reg = /[^abcd]/ig 只要不是abcd中的任何一个则被选上
\n 是换行符
| ^ | 以……开头 |
| $ | 以……结尾 |
| \b | 单词边界 |
| \B | 非单词边界 |
举例
function isPhoneNum(str){
return /^1[34578]\d{9}$/g.test(str)
}
console.log(isPhoneNum(1373934894521))
这里就是以1开头,$就是以什么结尾。
var str = 'hello1 world 123-hello2-789 456hello3world hello4'
str.match(/\bhello\d\b/g)//["hello1", "hello2", "hello4"]
\b单词边界,hello前面有空格,注意-也算边界。
量词
*: 出现零次或多次(任意次)
+: 出现一次或多次(至少出现一次)
?: 出现零次或一次(最多出现一次)
x{3}: x出现三次
{n,m}: 出现n到m次
{n,}:至少出现n次
举例
var str1 = 'http://jirengu.com'
var str2 = 'https://jirengu.com'
str1.match(/https?:\/\/.+/)
str2.match(/https?:\/\/.+/)//["https://jirengu.com", index: 0, input: "https://jirengu.com", groups: undefined]
用+str2可以匹配,str1不行。如果用*不管http有没有s都可以匹配。另外?只对s起作用,如想对http起作用,用(https)括起来。
| \t | 水平制表符 |
| \r | 回车符 |
| \n | 换行符 |
| \f | 换页符 |
| \cx | 与x对应的控制字符 |
| \o | 空字符 |
贪婪模式与非贪婪模式:(重点哦)
用例题来讲解比较好,见上篇。
分组:
Byron{20}n匹配20次
.test
作用:检测字符串参数是否存在正则表达式模式,存在返回true,否则为false。例题:
function isPhoneNum(str){
return /^1[34578]\d{9}$/g.test(str)
}
console.log(isPhoneNum(13898989898))//true
.exec
作用:正则表达式模式在字符串中运行查找,如果exec()找到了匹配的文本,则返回一个结果数组,否则返回 null.例题:
var str = '123, 456, 789'
var reg = /\d{3}/
reg.exec(str)
["123", index: 0, input: "123, 456, 789", groups: undefined]