日期:2014-05-16  浏览次数:20449 次

用正则查找字符串
功能 :是有个文本框输入正则表达式 如果网页中有匹配的字符就找出来。正则是可以随意输入的,有匹配的就显示出来。

------解决方案--------------------
JScript code
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Text</title>
</head>

<body>
    <label for="input">pattern:</label>
    <input id="pattern" name="input" type="input" value="\d+"/>
    <label for="flags">flags:</label>
    <input id="flags" name="flags" type="input" value="g"/>
    <input id="search" type="button" value="Search" />
     <p>asdflasdjfk21312394293</p>
     <div>87dlksdjfa89098239lasdjkf</div>
    <script>
        var eDoc = document,
            ePattern = eDoc.getElementById("pattern"),
            eFlags = eDoc.getElementById("flags"),
            eSearch = eDoc.getElementById("search");
        eSearch.onclick = function(){
            var pattern = ePattern.value,
                flags = eFlags.value,
                reg = new RegExp();
            reg.compile(pattern, flags);
            console.dir(reg);
            searchText(reg);
        }
        function searchText(reg){
            var elems = Array.prototype.slice.call(document.body.getElementsByTagName("*"), 0);
                childNodes = null;
            for(var i = 0, len = elems.length; i < len; i++){
                childNodes = elems[i].childNodes;
                if(childNodes.length === 1 && childNodes[0].nodeType === 3){
                    elems[i].innerHTML = childNodes[0].nodeValue.replace(reg, function(arg){
                        return "<span style='color: red'>" + arg + "</span>";
                    });
                }
            }
        }
    </script> 
</body>
</html>