2017-11-13 5 views
0

Ich weiß nicht, wie Sie die Frage besser aufspüren. Was ich tun möchte, ist nach jeder E-Mail-Adresse zu suchen, die meiner regEx in verschiedenen div.test entspricht, um <a href="mailto:"> Links zu erstellen.Wie über mehrere gefilterte Regex-Strings Schleife

Das funktioniert, aber wenn mehrere Mail-Adressen innerhalb eines div sind, wird nur der erste hervorgehoben. Was ist das Problem?

var regEx = /(\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*)/; 

$(".test").filter(function() { 
    return $(this).html().match(regEx); 
}).each(function() { 
    $(this).html($(this).html().replace(regEx, "<a href=\"mailto:$1\">$1</a>")); 
}); 

JSBIN

+4

fügen Sie ein 'g' am Ende Ihrer Regex .. – Keith

+0

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp Wie @Keith sagte, verwenden Sie die globale Flagge – bassxzero

Antwort

2

Sie müssen die globale (g) flag Sie regexp hinzufügen:

var regEx = /(\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*)/g 

Andernfalls Ihre regex wird nach dem ersten Spiel stoppen.