【问题标题】:Searching for a string within the result of RegEx in JavaScript在 JavaScript 中搜索 RegEx 结果中的字符串
【发布时间】:2023-03-04 19:25:01
【问题描述】:

以下代码中的行为非常奇怪:

var showContent = document.getElementById("something"); // Search for a content
showContent = showContent.innerHTML;
var patt3=/Profile">[^<]*(?=<)/; // Search for this pattern ...
var showName=patt3.exec(showContent); // ... within the above found content

当我想在上述 showName 的结果中搜索一个字符串时,问题就开始了:

var yesTest = showName.indexOf("text");
alert(yesTest);

上面总是返回-1(没有找到内容)。然而,这

alert(showName);

显然其中确实有“文本”。我错过了什么吗?

【问题讨论】:

  • 使用此模式:/Profile"&gt;([^&lt;]*)(?=&lt;)/。然后,showName = patt3.exec(showContent);showName=showName ? showName[1] : '';showName.indexOf('text');。为什么?因为在您的情况下,indexOf 不会从零开始,并且可能包括 Profile

标签: javascript regex search innerhtml indexof


【解决方案1】:

问题是.exec 返回一个数组,而不是字符串。在数组上执行.indexOf 将返回与您的搜索词完全相等的数组元素索引(或者在无法识别它的浏览器中失败,例如 IE8)。

如果您愿意,可以使用showName.toString().indexOf("text")

【讨论】:

【解决方案2】:

试试这样:

var patt3=/Profile">[^<]*(?=<)/;

 var re = new RegExp(regexp);

 re.test(showContent );

测试将返回真或假

【讨论】:

    猜你喜欢
    • 2014-04-27
    • 2013-08-14
    • 2015-08-31
    • 2013-10-31
    • 1970-01-01
    • 2019-05-12
    • 1970-01-01
    • 1970-01-01
    • 2013-04-03
    相关资源
    最近更新 更多