JavaScript:字符串匹配后返回锚定标记

JavaScript:字符串匹配后返回锚定标记,javascript,regex,string,match,return-value,Javascript,Regex,String,Match,Return Value,我试图在变量中返回并捕获匹配字符串的下一个立即锚点标记。我只想得到匹配字符串后面的单个锚标记,其他什么都不想。这就是我被困的地方。下面是代码和JSFIDLE <body> <p id="demo">Click the button to display the matches.</p> <p><strong>Regular Edition of 325</strong></p> <a href="link

我试图在变量中返回并捕获匹配字符串的下一个立即锚点标记。我只想得到匹配字符串后面的单个锚标记,其他什么都不想。这就是我被困的地方。下面是代码和JSFIDLE

<body>

<p id="demo">Click the button to display the matches.</p>
<p><strong>Regular Edition of 325</strong></p>
<a href="link1.html">Link 1</a>
<p><strong>Regular Edition of 658</strong></p>
<a href="link2.html">Link 2</a>
<p><strong>Regular Edition of Something Else</strong></p>
<a href="link3.html">Link 3</a>
<p></p>

<button onclick="myFunction()">Try it</button>

<script>
function myFunction(){
parseIt = $("p").find("strong").text();
matchIt();
}
function matchIt(){
resIt = parseIt.match(/Regular Edition of 325/);
document.getElementById("demo").innerHTML=resIt;
console.log($(resIt));
}

</script>

</body>

单击按钮以显示匹配项

325的常规版

658的常规版

其他内容的常规版

试试看 函数myFunction(){ parseIt=$(“p”).find(“strong”).text(); 匹配(); } 函数matchIt(){ resIt=parseIt.match(/325/的常规版); document.getElementById(“demo”).innerHTML=resIt; log($(resIt)); }


非常感谢您的帮助。如果您需要更多信息,请告诉我。

您可以使用
.filter
通过匹配的文本获取
p
元素:

function myFunction(){
    parseIt = $("p").find("strong");
    matchIt();
}
function matchIt(){
    resIt = parseIt.filter(function () {
        return $(this).text().match(/Regular Edition of 325/);
    });
    document.getElementById("demo").innerHTML= resIt.parent().next().text();
}



旁注:不要通过全局变量在函数之间进行通信。每个函数应该只使用自己的局部变量或封闭变量。

您可以使用
.filter
通过匹配的文本获取
p
元素:

function myFunction(){
    parseIt = $("p").find("strong");
    matchIt();
}
function matchIt(){
    resIt = parseIt.filter(function () {
        return $(this).text().match(/Regular Edition of 325/);
    });
    document.getElementById("demo").innerHTML= resIt.parent().next().text();
}


旁注:不要通过全局变量在函数之间进行通信。每个函数应该只使用自己的局部变量或封闭变量。

我使用了以下方法:

$('button').click(function() {
    $('p.search').each(function() {
        if(this.innerHTML.match(/Regular Edition of 325/)) {
            var $link = $(this).next('a');
            $('#demo').text($link.text());
            console.log($link);
        }
    });
});
单击按钮时,它会循环遍历要搜索的每个元素。如果元素内容与正则表达式匹配,那么我们将找到下一个链接。在此之后,您可以使用链接执行任何操作


更新:

这是一个纯JS版本。请注意,由于我使用了,这只与IE9+兼容

document.getElementById('trigger').addEventListener('click',function(){
var段落=document.getElementsByClassName('search');
对于(变量i=0;i
我用了这个:

$('button').click(function() {
    $('p.search').each(function() {
        if(this.innerHTML.match(/Regular Edition of 325/)) {
            var $link = $(this).next('a');
            $('#demo').text($link.text());
            console.log($link);
        }
    });
});
单击按钮时,它会循环遍历要搜索的每个元素。如果元素内容与正则表达式匹配,那么我们将找到下一个链接。在此之后,您可以使用链接执行任何操作


更新:

这是一个纯JS版本。请注意,由于我使用了,这只与IE9+兼容

document.getElementById('trigger').addEventListener('click',function(){
var段落=document.getElementsByClassName('search');
对于(变量i=0;i

您可以通过执行以下操作来简化此过程:

function myFunction() {
    parseIt = $("p strong").filter(function () {
        return this.innerText.match(/Regular Edition of 325/);
    });
    var anchor = parseIt.parent().next("a");
}

您可以通过执行以下操作来简化此过程:

function myFunction() {
    parseIt = $("p strong").filter(function () {
        return this.innerText.match(/Regular Edition of 325/);
    });
    var anchor = parseIt.parent().next("a");
}

如果您希望从锚定中获得属性,则更容易通过“a”标记而不是段落节点进行循环。可以使用jQuery的“prev()”方法访问前面的“p”,并检查其文本是否与正则表达式匹配。

请注意,如果html发生更改,此代码将中断。考虑在DIV中包装每个标签/链接,并遍历容器,而不是使用PREV/NeX/Read等来遍历,

由于()调用了纯JS版本:


如果您希望从锚定中获得属性,则更容易通过“a”标记而不是段落节点进行循环。可以使用jQuery的“prev()”方法访问前面的“p”,并检查其文本是否与正则表达式匹配。

请注意,如果html发生更改,此代码将中断。考虑在DIV中包装每个标签/链接,并遍历容器,而不是使用PREV/NeX/Read等来遍历,

由于()调用了纯JS版本:


作为补充说明,您不应该使用内联Javascript。创建一个事件监听器,如,
$('button')。单击(myFunction)。是的,我知道。谢谢。顺便说一句,你不应该使用内联Javascript。创建一个事件监听器,如,
$('button')。单击(myFunction)。是的,我知道。谢谢。另外,我知道这在没有jQuery的情况下是可行的。但是OP使用了jQuery,所以我继续使用它。谢谢。没有jQuery会很好。@Justin我制作了一个(grosser)没有jQuery的版本。而且,我知道没有jQuery这是可行的。但是OP使用了jQuery,所以我继续使用它。谢谢。没有jQuery就好了。@Justin我制作了一个没有(grosser)jQuery的版本。谢谢你的旁注和信息。谢谢你的旁注和信息。