如何使用正则表达式在带有jQuery的页面中查找内容?

如何使用正则表达式在带有jQuery的页面中查找内容?,jquery,regex,replace,match,template-engine,Jquery,Regex,Replace,Match,Template Engine,所以我一直在尝试做$(document.match(/regexp/);我一直在说“未定义的不是函数” 当我执行$(document)html()匹配(/regexp/)时;TypeError:无法读取未定义的属性“match” 我使用的regexp是/^[~{.*.}~]$/ 我只想在html文档中搜索[~{any-king-input}~],这样我就可以使用jQuery将其替换为正确的代码。基本上,我将创建自己的模板引擎。现在的那些要么做不到我需要的,要么太臃肿了 <body>

所以我一直在尝试做$(document.match(/regexp/);我一直在说“未定义的不是函数”

当我执行$(document)html()匹配(/regexp/)时;TypeError:无法读取未定义的属性“match”

我使用的regexp是/^[~{.*.}~]$/ 我只想在html文档中搜索[~{any-king-input}~],这样我就可以使用jQuery将其替换为正确的代码。基本上,我将创建自己的模板引擎。现在的那些要么做不到我需要的,要么太臃肿了

<body>

    [~{ header }~]


    <p>This is the home page</p>


    [~{ footer }~]

</body>
我会用匹配之类的东西来找到它,将“header”文本提取到一个变量中。从那里我会让它通过一个函数。该函数将返回一些操作,如获取html页面并加载。但是它必须再次找到表达式来替换它。

$(文档)
返回一个jQuery对象,而不是字符串。您需要调用
html()
,以获取文档的html内容。你可以做:

$('body').html(function(contents) {
    return contents.replace(/regexp/, 'replacement');
});
如果您只想看比赛:

var match = $('body').html().match(/regexp/);
console.log(match);

所以基本上你想用正则表达式来创建一个模板引擎?听起来很棒。是的,我想我可以找到一个文本节点,然后用内容替换它或加载一个页面。是的,正则表达式非常适合解析HTML,但现在你使用的是“字符串以开头”和“字符串以结尾”所以它不匹配。那么我必须只搜索以表达式开头的字符串吗?我如何才能看到它返回的内容?我需要能够看到找到的regexp的内容。谢谢这是我尝试的第二件事,它给出了一个类型错误:无法读取undefinedHmm的属性'match',
$(document).html()
返回
null
。我改成了
$('body')
.Hmm,很有趣。唯一需要做的就是检索/^[~{.*?}~]$/,如果我放置文本节点“regexp”并进行.match(/regexp/),它将返回文本节点“regexp”。然而,当我放入一个更复杂的regexp时,它只返回null。如果它返回null,则没有与您提供的regexp匹配的内容。不要忘记,
[
在正则表达式中有特殊的含义,如果您想让它字面上匹配,就必须对其进行转义。
var match = $('body').html().match(/regexp/);
console.log(match);