不错呦!smile@林凯西,确保“准备文件”中的几个文件都有安装,S...您好,看了您这篇帖子觉得很有帮助。但是有个问题想请...我的修改过了怎么还被恶意注册呢 @jjjjiiii 用PJ快9年了,主要是A...PJ3啊,貌似很少有人用PJ了,现在不是WP就是z...@332347365,我当时接入时错误码没有-10...楼主,ChkValue值应为-103是什么意思呢?...大哥 你最近能看到我发的信息,请跟我联系,我有个制...
Javascript字符串匹配match和exec
编辑:dnawo 日期:2008-11-07
在Javascript中,String对象的match方法和RegExp对象的exec方法都可用于字符串的匹配,今天我们来看看怎么使用他们。
match
match返回的都是一个数组,但又分成两种情形:当进行非全局匹配时该数组第一项为完整匹配字符串,其他项则为正则表达式中括号内的子匹配;当进行全局匹配时该数组全部项都为完整匹配字符串。
exec
exec返回的也是一个数组,并且第一项总是完整匹配字符串,其他项则为正则表达式中括号内的子匹配,但也可以分成两种情形:当进行非全局匹配时结果和match的非全局匹配相同;当进行全局匹配时,如果要返回第二个匹配字符中及其子匹配就得再次调用同一个RegExp对象的exec方法,如果要返回第三个匹配字符中及其子匹配就得第三次调用同一个RegExp对象的exec方法,依此类推,也就是说,当第n次调用同一RegExp对象的exec方法时将返回第n个完整匹配字符串及其子匹配组成的数组。
当调用非同一RegExp对象时将无效:
其他说明:
match和exec方法返回的数组都带有三个属性:input、index 和 lastIndex。input为被匹配的字符串,index为最后一次匹配字符串的开始位置,lastIndex为最后一次匹配字符串最后一个字符的下一个位置。当再次调用同一RegExp对象的exec方法时,将从RegExp对象的lastIndex位置开始匹配。
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>
//非全局匹配
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>
//全局匹配
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>
//非全局匹配
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>
//全局匹配
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>
//全局匹配
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 | 引用: 0 | 查看次数: 10283
发表评论
请登录后再发表评论!