您的位置:首页 > JavaScript学习, web前端关注 > JavaScript 正则表达式学习笔记<2>

JavaScript 正则表达式学习笔记<2>

js-regular-expression-learning-part-two

那么今天继续了,上次我们熟悉了一下关于JavaScript正则表达式的一些基本匹配方式,今儿个咱来学习下String对象的一些和正则表达式有关的方法,关于这个应该不用多说,常用于表单的字符串验证。


1.String对象的replace()方法

String对象最基本的方法之一,它用于替换目标字符串中的某个字符。比如:

var s = "—Hello11—";    //将这个字符串中的-替换成#
alert(s.replace("-","#"));  //返回#–Hello11—而不是###Hello11###

    //要替换所有的-号我们可以用正则了

alert(s.replace(/-/,"#"))   //用/-/来替换#,结果与上面一样,原因是你忘了加上匹配模式

alert(s.replace(/-/g,"#"));  //这样就可以将字符串的所有的-替换成#了

    //如果我想把目标字符串替换成#Hello11#该怎样写正则呢?

alert(s.replace(/-+/g,"#"));  //+是什么作用请查上篇笔记

String对象正则实现trim(去空格)效果

var s = "   Hello   ";
alert("|"+s.replace(/^\s+/,"")+"|");  //替换前面的多个空格:^
alert("|"+s.replace(/\s+$/,"")+"|");  //替换后面的多个空格:$  注:加上“|”易辨认

    //整合到一个trim函数里面去,调用此方法时可以去掉字符串两边的空格

function trim(s){

    var re1 = /^\s+/,re2 = /\s+$/;

    s= s.replace(replace(),"");

    return s.replace(re2,"");

}

2.String对象的split()方法

此方法将目标字符串用某字符分割开,并返回一个数组对象。基本用法如下:

var s = "12,34,56";
var arrs = s.split(",")
alert(arrs[0]+"\n"+arrs[1]+"\n"+arrs[2]);

小扩展:当目标字符串是用户输入的一些字符,比如生日。我们该如何分别获取他的年、月、日。

var s = "1988-8-8";   //这里是用户输入的数据
var date = s.split("-");
var year = date[0],month = date[1],day = [2];
alert("您出生于:"+year+"年"+month+"月"+day+"日");

对于一些“不按常理出牌”的用户,我们可以用正则去搞定,比如:

var s = "1988- 8 -*8";  //比如用户这样输入了数据
var date = s.split(/[^0-9]+/);  //脱字符^放在[]中间表示匹配相反内容

    //这个正则表示匹配多个非数字字符,用其分割
var year = date[0],month = date[1],day = [2];
alert("您出生于:"+year+"年"+month+"月"+day+"日");

3.String对象的search()方法

这个方法表示查找字符串中与之匹配的字符并返回其下标值,没找到匹配值时返回-1 。比如:

var s = "My age is 18.";
alert(s.search("1"));//返回10,search方法与indexof方法的区别在于search可以使用正则

4.String对象的match()方法

这个方法类似于正则中的exec方法,如:

var s = "Ubuntu 8.10";
var re = /^([a-z]+)\s+(\d+)\.(\d+)/i; //正则中的.表示匹配任意字符,这里要转义它
var arrs = s.match(re);
alert("name:"+arrs[1]+"\nversion:"+arrs[2]+"\nsub-version:"+arrs[3]);

休息一下..

收藏 & 分享:分享家:Addthis中文版

相关文章

4 条评论 发表在“JavaScript 正则表达式学习笔记<2>”上

  1. 阳光淘网 说:

    学习了,有空到我的网站参观指导!

  2. lotto 说:

    收到了,有点复杂

  3. jianfei998 说:

    谢谢分享,学习了。

  4. 林西老九 说:

    果断沙发一个,嘿嘿

留言内容可以体现一个人的个性和态度! ---> Just do it...

* (必填)

< Ctrl + Enter >

注意: 评论者允许使用'@user空格'的方式将自己的评论通知另外评论者。例如, ABC是本文的评论者之一,则使用'@ABC '(不包括单引号)将会自动将您的评论发送给ABC。使用'@all ',将会将评论发送给之前所有其它评论者。请务必注意user必须和评论者名相匹配(大小写一致)。
click to changeSecurity Code