您的位置:首页 > Web前端 > JavaScript

学习 Javascript 正则表达式(一)————使用正则表达式对String对象解析

2008-04-02 00:32 645 查看
上次面试的时候,人家问起Javascript,随便聊了聊,Javascript里的东西到是没有难到我。但是问起正则表达式的时候,到是彻底的难倒我了。倒不是没有看过,学Java的时候,确实看过。但当时是学Java,谁会有心情仔细看什么正则表达式呢?而且Java书上也就那么几页,肯定不够干什么的。正好现在有闲暇时间,拿出来学习一下,这么重要的东西可不能不会。 好现在开始:

首先是正则表达式的英文名称:Regular Expression

之后是创建第一个RegExp变量。创建RegExp变量有两种方法,一种是像创建String时一样,直接使用字符串定义。另一种是使用ReqExp构造函数创建。

第一种方法是:

var pattern = /sS/;

第二种方法是:

var pattern = new RegExp("sS");
var zipcode=new ReqExp("//d{5}","g"); //第一个变量是正则表达式(/ / 里的),第二个是用来加i或g的。

创建完对象,我们写几个例子来说明如何在Javascript中,使用正则表达式。

首先使用正则表达式对String对象解析,这也是我们最经常使用的。String对像包含四个有用的方法,第一个是search方法。

“JavaScript”.search(/script/i/);
//这个方法返回值是4,也就是javascript第五个字母。开始值是0,所以是4。

第二个方法是replace(var,var); 使用方法,用需要替换的字符串调用,第一个参数填 正则表达式,第二个参数添加需要替换的 字符串。

var text="Java is my love, my best lover is Java.";
var result=text.replace(/java/gi,"Bava"); // i用来忽略大小写,g用来搜索整个字符串。

《JavaScript权威指南》上一个很漂亮的使用例子。
var text="Java is my love, my best lover is Java.";
var quote=/"([^"]*)"/g;
var result=text.replace(quote,"''/$1''");
//可以将 "Java..." 周围的“,替换成''

第三个方法是match,它会返回一个数组,即与正则表达式相匹配的数组。

text2="1 plus 2 equals 3";
var result2 =text2.match(//d+/g);
alert(result2[0]);
//输出1,result2的数组里是 1,2,3,
注:即使text2执行的不是全局收索(不加g),也会返回数组,这时的是第一个全比配值,之后是部分匹配。

最后一个是也是一个很有用的方法。split()它可以将像,123,456,789,0这样的字符串分解成一个数组。

text3="123,456,789,0";
result3=text3.split(",");
alert(result3[1]);
//返回456,当然这个例子没用正则表达式。

《JavaScript权威指南》上还有一个很漂亮的使用例子。

text3="123, 456, 789,0";
result3=text3.split(//s*,/s*/);
alert(result3[1]);
//这个例子展示的是即使在‘,’前后有空格,一样可以把字符串分开。

最后简单写一下RegExp对象的方法。一共有两个两个,一个是exec(),这个方法与String对象的match相似。只是对象和参数换一下位。第二个是test()组要是测试看是否有符合的,有就返回true。

var pattern=/java/g;
var text="Javascript is more fun than Java!";
var result;
while((result=pattern.exec(text))!=null){
alert("Matched'"+result[0]+"'"+" at position "+result.index+"; next search begins at
"+pattern.lastIndex);
}

var pattern=/java/i;
pattern.test("JavaScript"); //true
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: