首页 新闻 会员 周边 捐助

JS 正则式问题

0
悬赏园豆:50 [已解决问题] 解决于 2012-09-19 16:44

window.onload = function () {
            var replaceMsg = "wHENEVER SANG MY SONG,oN THIS STAGE<BR /> &COPY;1999-2006";
            var matchExp = /([\d])|([a-z])|([A-Z])/g;
            document.body.innerHTML = replaceMsg.replace(matchExp, magicCode);
        }

 

        function magicCode(s, a, b, c) {
            return a ? "<font color='red'>" + s + "</font>" : (b ? b.toUpperCase() : c.toLowerCase());
        }

 

麻烦大侠给我解释下这段正则式什么意思啊。

HeartDawn的主页 HeartDawn | 初学一级 | 园豆:9
提问于:2012-09-06 15:49
< >
分享
最佳答案
1

1楼正解!好巧妙啊!

你可以新建一txt文档,把你代码拷贝到文档里如下

<html>
<script >
window.onload = function () {
            var replaceMsg = "wHENEVER SANG MY SONG,oN THIS STAGE<BR /> &COPY;1999-2006";
            var matchExp = /([\d])|([a-z])|([A-Z])/g;
            document.body.innerHTML = replaceMsg.replace(matchExp, magicCode);
        }
 
        function magicCode(s, a, b, c) {
            return a ? "<font color='red'>" + s + "</font>" : (b ? b.toUpperCase() : c.toLowerCase());
        }
</script>
</html>
把文档后缀改成html,双击用浏览器打开,自己调试。
DoTop-DoIT | 菜鸟二级 |园豆:208 | 2012-09-06 17:14
其他回答(4)
1

好巧妙的正则替换!

正则本身只是取单个数字、小写字母或大写字母。

s对应/([\d])|([a-z])|([A-Z])/g 的匹配结果

a,b,c分别对应每个分组的结果。

a对应([\d]),当是数字时,a匹配到了,为真,magicCode返回"<font color='red'>" + s + "</font>"

b对应([a-z]),当是小写字母时,a分组没有匹配到,b匹配到了,a为假,b为真,magicCode返回b.toUpperCase()

c对应([A-Z]),同理,返回c.toLowerCase()

收获园豆:50
向往-SONG | 园豆:4853 (老鸟四级) | 2012-09-06 16:21
0

正则分析一楼正解,这段代码的作用是把给字的字符串中的数字高亮(变为红色),小写字母转大写,大写字母转小写

artwl | 园豆:16736 (专家六级) | 2012-09-06 17:17
0

学习了...

jingjunfeng | 园豆:873 (小虾三级) | 2012-09-06 17:23
0

mark...

秋风sao落叶 | 园豆:44 (初学一级) | 2012-09-06 23:57
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册