pirajanMedlem sedan apr. 2001246 inlägg Hej!
Har försökt hitta ett bra mönster för att få ut en hel hyperlänk ur källkod mha regexp.
Jag har hittat följande:
/a href="?([:\/\w\s\d\.]*)"?/i
Detta gör dock att länkar med andra attribut som exempelvis "class" inte matchar.
Jag vill alltså att följande ska matcha:
<a href="*" *>*</a>
Där * får vara vad som helst.
Någon som kan tipsa om förbättringar.
Peter SMedlem sedan dec. 20025 483 inlägg Hej!
/<a(?: (?:[a-z]+)="[^"]*")+>.*?<\/a>/i
pirajanMedlem sedan apr. 2001246 inlägg Tack för svaret!
Jag gjorde enligt följande, men får då även matchning på "javascript"-länkar såsom
<a href="javascript:foo()">rajraj</a>
Regular expression:
/href="?([:\/\w\s\d\.\?\=\&\-]*)"?\W/i
Nu får jag även länkar som har andra attribut före href.
Finns det något sätt att slippa "javascript"-länkarna?
Jag vill alltså ta ut matchningen, själva URL:en. Experimenterar med Ruby.
Peter SMedlem sedan dec. 20025 483 inlägg Testa
/<a href="(?!javascript:)([^"]*)"(?: (?:[a-z]+)="[^"]*")*>.*?<\/a>/i
pirajanMedlem sedan apr. 2001246 inlägg Lade till .*? mella a och href och nu verkar det fungera som det ska!
/<a.*?href="(?!javascript:)([^"]*)"(?: (?:[a-z]+)="[^"]*")*>.*?<\/a>/i
Men nu får jag ett annat problem. Länkar till ankare (#ankare) kommer med. Hur får jag bort # och det som står efter i URL:en?
<a id="test" href="j.htm#ankare">Till ny sida</a>
CssonMedlem sedan feb. 2000438 inlägg Det lättaste är ju att göra det i två steg. När du väl har din länk i en variabel rensar du bara allt från # och framåt:
/^([^#]*)#*$/
Peter SMedlem sedan dec. 20025 483 inlägg /<a(?: (?:[a-z]+)="[^"]*")* href="(?!javascript:)([^"]*?)(?:#[^"]*)?"(?: (?:[a-z]+)="[^"]*")*>.*?<\/a>/i
Flyttat från Regular Expressions på grund av att provtiden för forumet har gått ut