2017-07-16 3 views
0

Hey Leute ich die folgende Regex-Funktion erstellt haben, um Links zu einer Zeichenfolge hinzufügen, die übergeben wird, sucht die Funktion wie folgt:Regex Links zu extrahieren bei slash bricht

function addLinks(str) { 
     return str.replace(RegExp('https://[^/\s]+' , 'g') , (match , p1) => '<a href="' + match + '">' + match + '</\a>'); 
    } 

Jetzt, als ich die obige Funktion ein Pass Satz wie der folgende Liste:

Go through codepens and make experiments folder -- https://codepen.io/pens/ 

ich folgende Ausgabe:

<li>Go through codepens and make experiments folder -- <a href="https://codepen.io">https://codepen.io</a>/pens/</li> 

die letzte p Kunst des Links /pens/ wird nicht in den Link aufgenommen, warum passiert das, obwohl ich [^/\s]+ hinzugefügt habe?

Antwort

1

Sie könnten nur versuchen, bis die Kollision mit einem Leerzeichen entsprechen:

function addLinks(str) { 
    return str.replace(RegExp('https://[^\s]+' , 'g') , (match , p1) => '<a href="' + match + '">' + match + '</\a>'); 
} 

Dies könnte funktionieren, da gültig URLs keine Leerzeichen in ihnen haben kann. Natürlich würde diese Regex die Markierung bei einer defekten URL verpassen.

+0

+1 aber siehe, wie in der Geige hier -> https://jsfiddle.net/2ajzrfqb/, wird der Teil nach google.com nicht ausgewählt. : | –