使用Javascript搜索函数内的代码

时间:2015-06-04 19:08:37

标签: javascript jquery regex

我有一个html页面,其中包含嵌入脚本标记内的小javascript函数。我在同一页面内编写另一个javascript / jquery函数,将此页面作为文本加载到变量中,并在较小的javascript函数中搜索代码。

DEMO

实施例: 这是我的文件: abc.html 。理想情况下,搜索应返回 alert(element)

<!DOCTYPE html>
<html>
  <body>
    <button id="btn-get">$.get()</button>
    <script data-require="jquery" data-semver="2.0.3" src="http://code.jquery.com/jquery-2.0.3.min.js"></script>
    <script type="text/javascript" charset="utf-8">         
        function getValue(element)
        {
            alert(element);
            //end
        }

        var content, matched;
        $('#btn-get').click(function(e) 
        {
            $.get('abc.html', function(data) 
            {
            content = data;
            });
            matched = String(content).match("getValue(.*)end"); 
            console.log(matched);
      });
    </script>
  </body>
</html>

这会从搜索查询中返回(。*),这不是我想要的。 我已经尝试了以下SO帖子中的建议:

Regex get all content between two characters

Find string between two strings in Javascript or jQuery

regex search a string for contents between two strings

它们返回null值。我也试过使用split,pop。这种情况没有任何作用。 可以这样做吗?获得正确输出的最佳方法是什么? 提前谢谢!

2 个答案:

答案 0 :(得分:1)

由于SO,我想出了一个非常明显和简单的方法。

由于html中的每个标记都可以分配一个id,我只需从getValue函数中创建一个单独的脚本并为其分配一个id,然后使用$(“#id).html()来访问其内容。” p>

<!DOCTYPE html>
<html>
  <body>
    <button id="btn-get">$.get()</button>
    <script data-require="jquery" data-semver="2.0.3" src="http://code.jquery.com/jquery-2.0.3.min.js"></script>
    <script id="getvalue" type="text/javascript" charset="utf-8">         
        function getValue(element)
        {
            alert(element);
            //end
        }
   </script>
   <script>
        var content, matched;
        $('#btn-get').click(function(e) 
        {
            var temp = $('#getvalue').html();
            console.log(temp.substring(temp.indexOf('{')+1,temp.lastIndexOf('}')));
      });
    </script>
  </body>
</html>

答案 1 :(得分:0)

在这种特殊情况下,这个正则表达式符合您的要求:

/{\s*([\s\S]*?)\s*}/

但是,如果小javascript函数包含一个包含自己的大括号的语句,例如if () {}语句,它将不会产生您想要的结果。

你为什么需要这样做?如果不解析函数的HTML文本,有可能有更好的方法来实现相同的结果。

TEST