正则
一、概念
正则:正确的规则。
应用:1》正则匹配(验证当前字符串是否符合改规则的子串)
2》正则捕获(获取到符合规则的字符串)
二、正则的定义
1》字面量定义:var reg = /\d/g;
2》构造函数创建:var reg2 = new RegExp("\d","g");
三、正则的组成
1》修饰符
i:ignoreCase(忽略大小写)g:global(全局匹配) m:multiline(多行匹配)
2》元字符 \d
3》以/开始。以/结束
四、常用的元字符
1》\d (digits)0-9的任意一个字符
\D 除0-9外的其他字符
\w 字母(大小写)、数字、下划线
\W 除字母、数字、下划线之外的任意字符
\s匹配任意一个空白字符,包括制表符(1个制表符=4个空格)
\b 匹配边界符
\n (enter)匹配换行符
2》量词元字符
* 表示0个或多个
? 表示0个或1个
+表示1个到多个
{m} 表示m个
{m,}表示m个或多于m个
{m,n}表示m到n个
3》转义字符
.表示出了换行以外的任意字符
/.表示一个小圆点
^表示以某个字符开始
$表示以某个字符结尾
a|b表示a或者b中的任意一个
[abc]表示a或b或c中的任意一个
[^abc]表示除了abc之外的任意一个
[a-z]表示a-z中的任意一个字母
[^a-z]表示除了a-z之外的任意一个字符
()分组
(? : )当前分组只匹配不捕获
(?=)正向预查
(?!)反向预查
五、正则的几个小栗子
1》至少一个汉字
var reg = /^[\u4e00-\u9fa5]+$/;
2》手机号码:11位,一般以1开头
var reg = /^1\d{10}$/;
3》姓名:中文汉字,有的少数民族的名字是中间带有.的
var reg = /^[u4e00-u9fa5]{2,}(/.{1}[u4e00-u9fa5]{2,})?$/;
4》邮箱:用户名+@+域名
var reg = /^\w+([-.]\w+)@[a-zA-Z0-9]+\.[a-zA-Z0-9]+$/;
六、正则的应用
var reg = /^\d+$/;
//是否符合正则
reg.test(x):符合返回true,不符合返回false
//替换
1> var reg = new RegExp(\d,"g");
str = str.replace(reg,"**");
2> str= eval("/"+\d+"g");
七、正则表达式的相关方法
1》exec 反复调用,返回符合规则的字符串的数组,没有时返回null
var reg = /\d+/;
var str = "123";
var arr = reg.exec(str);
2》从字符串的角度进行正则捕获
同上例:var arr = str.match(reg);
3》search返回第一个和正则匹配的子串索引
var index = str.search(reg);
4》替换
var str = "123哈哈456呵呵789嘿嘿";
str.replace(/\d+/,function(){
log(arguments);});