RegExp正则表达式(简单入门)

1. 定义的方法:new RegExp(‘模式字符串’,’模式匹配符’)
var box = new RegExp('Box');    //第一个参数是模式字符串
alert(box); //  /Box/两个反斜扛是正则表达式的自变量表示法
var box = new RegExp('Box','ig');   //模式修饰符i:忽略大小写,g:全局查找,m:多行查找
var box = /Box/ig;  //使用字面量的正则带修饰符,不加引号
2. 测量正则表达式

列表内容

test()方法:

var pattern = new RegExp('Box');
var str = 'box';
alert(pattern.test(str));   //false;test()方法返回truefalse

等价于

alert(/Box/.test('Box'));   //false

test()检测是否包含:

var pattern = /Box/i;
var str = 'This is a box!';
alert(pattern.test(str));   //true;

exec()方法:

var pattern = /Box/ig;
var str = 'This is a Box!';
alert(pattern.exec(str));   //返回的是数组的值,没有就返回null
3. string对象的正则表达式

match方法():

var pattern = /Box/ig;
var str = 'This is a Box!That is a Box!';
alert(str.match(pattern));  //Box,Box 返回匹配的数组

search()方法:

var pattern = /xox/i;
var str = 'This is a Box!That is a Box!';
alert(str.search(pattern));     //找到返回找到的位置,找不到返回-1

replace()方法:

var pattern = /Box/ig;
var str = 'This is a Box!That is a Box!';
alert(str.replace(pattern,'Tom'));      //替换匹配到的字符串

split()方法:

var pattern = / /ig;
var str = 'This is a Box!That is a Box!';
alert(str.split(pattern));      //拆分
4.正则的静态属性和实例属性
/*静态属性,也可以使用短名*/
var pattern = /google/i;
var str = 'This is google!';
pattern.test(str);     //必须执行一下这句话才有效果
alert(RegExp.input);     //This is google
alert(RegExp.leftContext);     //This is
alert(RegExp.rightContext);     //!
alert(RegExp.lastMatch);     //google
alert(RegExp.lastParen);     //分组
alert(RegExp.multiline);     //多行
/*实例属性*/
var pattern = /google/gi;
alert(pattern.global);     //是否开启全局
alert(pattern.ignoreCase);     //是否忽略大小写
alert(pattern.source);     //源字符串
alert(pattern.lastIndex);     //最后一次匹配的位置,也可以自己设置
5.获取控制

字符类:单个字符和数字

var pattern = /g..gle/;     //.字符匹配除了换行符外的任意字符
var pattern = /go*gle/;     //o*,表示0个,1个或者n个
var pattern = /go+gle/;     //o+,表示一个或者多个
var pattern = /go?gle/;     //o?,表示一个或者0个
var pattern = /g.?gle/;     //.?,表示一个或者0个的任意字符
var pattern = /go{2,4}gle/;     //o{2,4},表示匹配o2-4次包含2次和4次
var pattern = /go{3,}gle/;     //o{3,},表示为3个或者3个以上
var str = 'google';
alert(pattern.test(str));     true
var pattern = /[a-z]oogle/;     //[a-z]26个小写字符
var pattern = /[A-Z]oogle/;     //[A-Z]26个大写字母
var pattren = /[0-9]oogle/;     //[0-9]匹配数字
var pattern = /[0-9]*oogle/;     //匹配任意个数字
var pattern = /[a-zA-Z0-9]oogle/;     //[a-zA-Z0-9]表示匹配大小写的都能匹配
var pattern = /[^0-9]oogle/;     //[^0-9]表示非0=9的任意字符
var pattern = /[a-z]+/
var str = 'google';
alert(pattern.test(str));

字符类:锚元字符匹配

var pattern = /^[0-9]oogle/;     //这个^符号,是在/后面的而不是在[]里面的,false
var pattern = /^[0-9]+oogle/;     //true
var str = '444oogle';
alert(pattern.test(str));
var pattern = /\woogle/;     //匹配字母,数字及下划线,[a-zA-Z_]
var pattern = /\Woogle/;     //表示[^a-zA-Z_];
var pattern = /\doogle/;     //表示[0-9]
var pattern = /\Doogle/;     //表示[^0-9]
var pattern = /^google$/;     //^强制首匹配,&强制尾匹配
var str = 'google';
alert(pattern.test(str));

字符类:空白字符

var pattern = /google/;
var pattern = /goo\sgle/;     //\s表示空白匹配
var pattern = /google\b/;     //\b表示到达边界
var pattern = /google|baidu|bing/;     //|表示匹配或选择模式
var pattern = /(google){4,8}/;     //分组,可以看成一个字符
var str = 'google';
alert(pattern.test(str));
var pattern1 = /8(.*)8/;     //匹配88之间的任意字符
var str1 = 'This is a 8google8';
pattern.test(str1);     //匹配一下
alert(RegExp.$1);     //打印匹配的字符串
var pattern = /8(.*)8/;
var str = 'This is a 8google8';
console.log(str.replace(pattern,'123'));     //This is a 132
console.log(str.replace(pattern,'<strong>$1<\/strong>'));     //$1表示分组获取字符串匹配到的字符串
var pattern = /(.*)\s(.*)/;
var str = 'google baidu';
alert(str.replace(pattern,'$2 $1'));     //baidu和google互换位置

贪婪和惰性

var pattern = /[a-z]/;     
var pattern = /[a-z]+/;     //这里使用了贪婪模式,所有的字符都变成了1
var pattern = /[a-z]+?/;     //使用惰性模式
var pattern = /[a-z]+?/g;     //开启全局,并且使用惰性模式,每一个字母替换成1
var str = 'abcdefj';
alert(str.replace(pattern,'1'));
var pattern = /8(.*)8/;     //使用了贪婪
var str = '8google8 8google8 8google8';     //匹配到了8google8 8google8 8google8
document.write(str.replace(pattern,'<strong>$1</strong>'));
var pattern = /8(.*?)8/g;     //使用了惰性
var str = '8google8 8google8 8google8';
document.write(str.replace(pattern,'<strong>$1</strong>'));

exec()返回数组

var pattern = /^[a-z]+\s[0-9]{4}$/;
var str = 'google 2012';
alert(pattern.exec(str));
alert(typeof pattern.exec(str));     //object
var pattern = /^([a-z]+)\s([0-9]{4})/
var str = 'google 2012';
var a = pattern.exec(str);
alert(a.length);
alert(a[0]);     //返回整个字符串
alert(a[1]);     //返回字符串的第一个数值
alert(a[2]);     //返回字符串第二个数值

捕获性分组

var pattern = /(\d+)([a-z]+)/;     //捕获性分组,所有的分组都捕获
var str = '123abc';
var a = pattern.exec(str);
alert(a[0]);

非捕获性分组

var pattern = /(\d+)(?:[a-z])/;     //非捕获性分组,只要在不需要捕获返回的分组加上?:
var str = '123abc';
alert(pattern.exec(str));     //123a,123

嵌套分组

var pattern = /(a?(b?(c?)))/;
var str = 'abc';
alert(pattern.exec(str));     //abc,abc,bc,c

前瞻性捕获

var pattern = /goo(?=gle)/;     //goo后面必须是gle,才能返回
var str = 'google';
alert(pattern.exec(str));     ///返回的是goo,而不是google,这是前瞻性捕获

特殊字符匹配

var pattern = /\[/;     //用反斜杠转义特殊字符,才能匹配
var str = '[';
alert(pattern.test(str));

换行模式

var pattern = /^\d+/gm;     //限定了首匹配,并且开启换行模式
var str = '1.baidu\n2.google\n3.bing';
alert(str.replace(pattern,'#'));
6.常用的正则

检查邮政编码

var pattern = /[1-9][0-9]{5}/;
var str = 'This is 230000!';     //必须6位,数字,第一位不为0
alert(pattern.test(str));

检查文件压缩包

//var pattern = /(文件名)\.(扩展名)/
var pattern = /^[\w\-]+\.(zip|gz|rar)$/;     //竖线的选择符必须用分组符号包含起来
var str = '2-13.zip';     //文件名:字母_数字.zip/gz/rar/7z
alert(pattern.test(str));

删除多余字母空格

var pattern = /\s/g;
var str = '111 222 333 555';
alert(str.replace(pattern,''));

删除首位空格:(3种方法)

var pattern = /^\s+/;     //强制首
var str = '   goo  gle   ';
var result = str.replace(pattern,'');
pattern = /\s+$/;     //强制尾
result = result.replace(pattern,'');
alert('|'+result+'|');
//var pattern = /^\s+(.+)\s+$/;     //(.+)贪婪模式会匹配goo后面的所有字符
var pattern = /^\s+(.+?)\s+$/;     //使用惰性模式
var str = '   goo  gle   ';
var result = pattern.exec(str)[1];
alert('|'+result+'|');
var pattern = /^\s+(.+?)\s+$/;     //使用的分组模式
var str = '    goo  gle   ';
var result = str.replace(pattern,'$1');
alert('|'+result+'|');

简单的电子邮件验证

var pattern = /^([\w\.\-]+)@([\w\-]+)\.([a-zA-Z]{2,4})$/;
var str = '8*****553@qq.com';
alert(pattern.test(str));

如有错误,欢迎指正,我是程序小白

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值