欢迎光临

木子屋

标题: Javascript字符串匹配match和exec

作者: dnawo

日期: 2008-11-07 11:10 AM

分类: 脚本语言

内容: 在Javascript中，String对象的match方法和RegExp对象的exec方法都可用于字符串的匹配，今天我们来看看怎么使用他们。
match
match返回的都是一个数组，但又分成两种情形：当进行非全局匹配时该数组第一项为完整匹配字符串，其他项则为正则表达式中括号内的子匹配；当进行全局匹配时该数组全部项都为完整匹配字符串。
复制内容到剪贴板 程序代码<script type="text/javascript">
//非全局匹配
var content = "abc@mzwu.com and abc@163.com";
var regExp = /([\w]+?)@([\w\.]+)/i;
var matchs = content.match(regExp);
if(matchs != null)for(var i=0;i<matchs.length;i++)alert(matchs[i]);
</script>
复制内容到剪贴板 程序代码<script type="text/javascript">
//全局匹配
var content = "abc@mzwu.com and abc@163.com";
var regExp = /([\w]+?)@([\w\.]+)/ig;
var matchs = content.match(regExp);
if(matchs != null)for(var i=0;i<matchs.length;i++)alert(matchs[i]);
</script>
exec
exec返回的也是一个数组，并且第一项总是完整匹配字符串，其他项则为正则表达式中括号内的子匹配，但也可以分成两种情形：当进行非全局匹配时结果和match的非全局匹配相同；当进行全局匹配时，如果要返回第二个匹配字符中及其子匹配就得再次调用同一个RegExp对象的exec方法，如果要返回第三个匹配字符中及其子匹配就得第三次调用同一个RegExp对象的exec方法，依此类推，也就是说，当第n次调用同一RegExp对象的exec方法时将返回第n个完整匹配字符串及其子匹配组成的数组。
复制内容到剪贴板 程序代码<script type="text/javascript">
//非全局匹配
var content = "abc@mzwu.com and abc@163.com";
var regExp = /([\w]+?)@([\w\.]+)/;
var execs;
//不能用while，否则将导致死循环
if((execs = regExp.exec(content)) != null)for(var i=0;i<execs.length;i++)alert(execs[i]);
</script>
复制内容到剪贴板 程序代码<script type="text/javascript">
//全局匹配
var content = "abc@mzwu.com and abc@163.com";
var regExp = /([\w]+?)@([\w\.]+)/ig;
var execs;
while((execs = regExp.exec(content)) != null)for(var i=0;i<execs.length;i++)alert(execs[i]);
</script>
当调用非同一RegExp对象时将无效：
复制内容到剪贴板 程序代码<script type="text/javascript">
//全局匹配
var content = "abc@mzwu.com and abc@163.com";
var execs;
if((execs = (/([\w]+?)@([\w\.]+)/ig).exec(content)) != null)for(var i=0;i<execs.length;i++)alert(execs[i]);
if((execs = (/([\w]+?)@([\w\.]+)/ig).exec(content)) != null)for(var i=0;i<execs.length;i++)alert(execs[i]);
</script>
其他说明：
match和exec方法返回的数组都带有三个属性：input、index 和 lastIndex。input为被匹配的字符串，index为最后一次匹配字符串的开始位置，lastIndex为最后一次匹配字符串最后一个字符的下一个位置。当再次调用同一RegExp对象的exec方法时，将从RegExp对象的lastIndex位置开始匹配。

+ 查看当前日志评论 (0)

登录

────────────

木子屋

PJBlog3 v3.2.9.518 Inside.

Processed In 0.611 ms

返回

标题: Javascript字符串匹配match和exec

你没有权限发表评论

────────────

木子屋

PJBlog3 v3.2.9.518 Inside.

Processed In 0.611 ms

返回

暂无评论

返回

────────────

木子屋

PJBlog3 v3.2.9.518 Inside.

Processed In 0.627 ms

返回