当前位置:编程学习 > JS >>

JavaScript search()相关习题

<script type="text/javascript">
    function init(){
        var s="abcd--abc@d.comcdefg";
        a=s.search(/[a-z]+@d.[a-zA-Z]{2}m/);
        alert(a);
    }
    window.onload=init;
</script>
为什么结果是6  求详解
答案:首先字符串的 search 方法是查找第一个匹配的子字符的索引, 如果你仔细一点的话,你会发现你的正则表达式 "/[a-z]+@d.[a-zA-Z]{2}m/" 只匹配的abc@... 这里开始的部分,这说明 abcd-- 这部分字符没有匹配进去, abc@...  刚好在 "abcd--abc@d.comcdefg” 的第6位 (从0开始数), 这是 search 为什么输出 6 的原因, 然后为什么 abcd-- 这部分没有匹配, 你注意到了么? 你的正则表达式中并不支持 “-” 字符, 这是导致 abcd-- 没有被匹配的原因。 

另外补充一些(这些在js中的具体我不清楚,下面这些是在as中的,但是我觉得js应该也是一样的):

1. @d 这,这个 d 应该是匹配 [0-9] 的数字的, 而不是匹配字母 "d" ,. 所以 "d" 应该转义

2. @d. 这, 这个 "." 应该被转义, "." 是匹配任意字符的,如果是扩展的正则还匹配换行符 "\n".

2. {2} 这, 这现在 [a-zA-Z] 大写或小写字母只能出现2次, 也就是说最多且并须只匹配 @d.co, 这的 "co", 而不匹配 " comcdefg",

3. m 标志应该出现在正则的最后面吧?

这个不是匹配了“abc@d.com”,然后是第七个字符,所以返回的是6呀
只不过这个正则表达式写得很悲剧呀,.没有转义,幸亏reg是最小匹配,否则就纠结了

上一个:javascript 正则表达式问题!!
下一个:求助!javascript正则表达式

CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,