webForumDet fria alternativet

Matcha hyperlänk

7 svar · 448 visningar · startad av pirajan

pirajanMedlem sedan apr. 2001246 inlägg
#1

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
#2

Hej!

/<a(?: (?:[a-z]+)="[^"]*")+>.*?<\/a>/i
pirajanMedlem sedan apr. 2001246 inlägg
#3

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
#4

Testa

/<a href="(?!javascript:)([^"]*)"(?: (?:[a-z]+)="[^"]*")*>.*?<\/a>/i
pirajanMedlem sedan apr. 2001246 inlägg
#5

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
#6

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
#7
/<a(?: (?:[a-z]+)="[^"]*")* href="(?!javascript:)([^"]*?)(?:#[^"]*)?"(?: (?:[a-z]+)="[^"]*")*>.*?<\/a>/i
nitro2k01Medlem sedan aug. 20039 342 inlägg
#8

Flyttat från Regular Expressions på grund av att provtiden för forumet har gått ut

135 ms totalt · 3 externa anrop · v20260731065814-full.3ab8d573
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
132 ms — hämta tråd, inlägg och bilagor (db)