正则表达式是一个描述字符模式的对象。也就是把规则说给计算机听。javascript中的RegExp类表示正则表达式。

可以使用RegExp()构造函数来创建RegExp对象,也可以通过直接量与法来创建。

语法

构造函数:

var reg = new RegExp(表达式,修饰符)

字面量:

var reg = /表达式/修饰符;

常用修饰符

i 不区分大小写
g 全局匹配
m 多行匹配
s 特殊字符圆点 . 中包含换行符 \n

常用的元字符(特殊字符,注意大小写)

^ 开始字符
$ 结束字符
\ 转义符>>特殊标点符号,在前面加 \ 后,就代表该符号本身.^ 要匹配 "^" 字符本身,请使用 \^ 特殊标点符号() [ ] { } . ? + * |
\w 匹配字母、数字、下划线
\W 匹配非字母、数字、下划线
\d 匹配数字
\D 匹配非数字
\s 匹配空自字符(空格、换行)
\S 匹配非空白字符
\n 匹配换行符

常用限定符

* 匹配前面的子表达式零次或多次
+ 匹配前面的子表达式一次或多次
? 匹配前面的子表达式零次或一次
{n} 匹配确定的n次
{n,} 至少匹配n次
{n,m} 最少些配n次且最多匹配m次

方法

检测一个字符串是否与正则相匹配

reg.test(string)    //返回值为布尔值    true匹配、false 不匹配
reg.exec(string)    //匹配成功返回数组,并确定其位置,否则返回null
  
var str = 'abc';
var reg = /[a]/;
console.log(reg.test(str));   //返回 true
console.log(reg.exec(str));   // 返回 ["a", index: 0, input: "abc", groups: undefined]

exec() 再也找不到匹配的文本时,它将返回 null,并把 lastIndex 属性重置为 0>>最后的查找元素

string类中可以支持正则的方法

search 检索与正则表达式相匹配的值 >>返回匹配字符串的下标,否则返回-1
match 找到一个或多个正则表达式的匹配 >>如果没有找到任何匹配的文本,返回null。否则,它将返回一个数组(依赖于是否具有全局标志g)
replace 替换与正则表达式匹配的子串 >>返回一个新的字符串
split 把字符串分割为字符串数组 >>返回一个字符串数组

常用正则表达式

匹配email地址
/\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*/
匹配手机号码
/^(0|86|17951)?(13[0-9]|15[012356789]|166|17[3678]|18[0-9]|14[57])[0-9]{8}$/
匹配身份证号
/^(^[1-9]\d{7}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}$)|(^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])((\d{4})|\d{3}[Xx])$)$/
匹配url地址
/^https?:\/\/(([a-zA-Z0-9_-])+(\.)?)*(:\d+)?(\/((\.)?(\?)?=?&?[a-zA-Z0-9_-](\?)?)*)*$/i
匹配邮编号
/^[1-9]\d{5}(?!\d)$/
只能由英文和数字组成
/^[a-z0-9]+$/i
只能由英文、数字、下划线组成
/^\w+$/
查找任何从小写a到小写z的字符
[a-z]
查找任何从大写A到大写Z的字符
[A-Z]
查找任何从0至9的数字
[0-9]
查找括号内的任意一个字符
[abc]
查找除了括号内的任意字符
[^abc]
常用汉字编码范围;Unicode编码16进制的utf-8汉字编码:u4e00最小中文字符 u9fa5最大中文字符
/^[\u4e00-\u9fa5]+$/