Oprettet man. d. 05. september 2011 kl. 13:33:58

amews_aj
amews_aj (21.905 point. Point ude: 0)
www.amews.net

Match streng udenfor html tags

Jeg har brug for en regular expression der matcher en streng udenfor HTML tags.

Så her skal de understregede matches:
test<a href="..test..">test</a>test

Har fundet følgende RegExp:
&quot;(?&lt;!&lt;[^&lt;&gt;]*)test(?![^&lt;&gt;]*&gt;)&quot;


men kan ikke få den til at virke med java script:
new RegExp("(?<!<[^<>]*)"+smileysym[i]+"(?![^<>]*>)", 'g');

Det giver blot en syntax fejl.
Nogen der kan se problemet?

Skrevet tor. d. 03. november 2011 kl. 09:40:53| #1

Qobra
Qobra (1.765 point)
Hvad med at replace alle html-tags væk til at starte med? Det er en mere overkommelig opgave. Kan gøres med java script:

"lorem\n<html>\nipsum\n</html>\ndolor".replace(/[\r\n]+/g," ").replace(/<[^>]+>/g, "\n").split(/\s*[\r\n]+\s*/)

Giver arrayet: ["lorem", "ipsum", "dolor"]

Altså: Først udbyttes newlines med mellemrum. Så fjernes alle tags (<...>) og så til sidst dannes et array med linjerne.

Skrevet tor. d. 03. november 2011 kl. 10:45:08| #2

amews_aj
amews_aj (21.905 point)
www.amews.net
Tjoh, men jeg vil gerne beholde HTML tags i outputtet, blot erstatte nogle tekststrenge i alt udenfor HTML tags forinden.

Skrevet tor. d. 03. november 2011 kl. 11:10:15| #3

Qobra
Qobra (1.765 point)
Man kan ikke lave lookbehind i javascript, men du kan lave lookahead, og det er vel også tilstrækkeligt?

> "a<aa>asdfasd<fasdfa>aasdfasdf</aa>a".replace(/a(?=[^>]*?(<|$))/g, 'B');
"B<aa>BsdfBsd<fasdfa>BBsdfBsdf</aa>B"

Så den ser altså ca. sådan her ud: new RegExp(smileysym[i]+"(?=[^>]*?(<|$))", 'g');

Husk at smileysym[i] skal escapes, fx ":-)" vil lave en slutparantes, og så vil det fejle.

Skrevet tor. d. 03. november 2011 kl. 14:47:53| #4

amews_aj
amews_aj (21.905 point)
www.amews.net
Måske det vil virke.
Jeg prøver det af så snart jeg får tid til det :)
Indtil videre, tak for forslaget.

Skrevet tor. d. 24. november 2011 kl. 20:01:27| #5

amews_aj
amews_aj (21.905 point)
www.amews.net
Fejler stadig...

I http://.../
bliver :/ opfattet som smiley.

Skrevet tor. d. 24. november 2011 kl. 20:16:43| #6

Qobra
Qobra (1.765 point)
Men det er jo heller ikke inde i et tag?

Skrevet tor. d. 24. november 2011 kl. 20:28:01| #7

amews_aj
amews_aj (21.905 point)
www.amews.net
Sorry, glemte at nævne at jeg forinden check for smileys kører en anden funktion der erstatter links (http://.../) med et a-tag.
Så det kommer ind i et tag.

Skrevet tor. d. 24. november 2011 kl. 23:21:26| #8

Qobra
Qobra (1.765 point)
Kan du ikke skrive det stykke HTML, som der fejler? Hvis din funktion laver linket til <a href='http..'>http..</a>, så er http.. jo stadig udenfor et tag.

Skrevet tor. d. 24. november 2011 kl. 23:33:37| #9

amews_aj
amews_aj (21.905 point)
www.amews.net
Ja, så har jeg nok skrevet det forkert desværre.
Både det i href, og inde i <a></a> tags skal undgå smileys.

Skrevet fre. d. 25. november 2011 kl. 17:25:25| #10

Qobra
Qobra (1.765 point)
Okay, så er regular expressions nok ikke den bedste løsning.

Skrevet lør. d. 11. februar 2012 kl. 13:17:42| #11

amews_aj
amews_aj (21.905 point)
www.amews.net
Tak for forsøget...
Lukker...

Skriv et indlæg




Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] [img]link til billede[/img]
Web- og emailadresser omdannes automatisk til links

Log ind

   

   

Seneste spørgsmål

.NET RegEx: tekst mellem to markører

Oprettet den 28. april 2012 kl. 19.34
dingemann giver 60 point for svar | Giv et svar »

Streng længde med karaktere på bestemte pladser

Oprettet den 17. april 2012 kl. 10.52
joki giver 30 point for svar | Giv et svar »

Simpel sammenlignen på 2-3 værdier

Oprettet den 3. april 2012 kl. 14.07
bendixen giver 200 point for svar | Giv et svar »



   




Tips & Tricks fra PC World

Teaser billede

Læserne: Her er vores værste it-indkøb

Det er ikke al it-udstyr, som er det rene guld. Her er nogle af læsernes skrækhistorier.


Anmeldelser fra PC World

Teaser billede

Test: Mobil med Ferrari-design - og en Trabant-motor

Motorola har begået endnu en smartphone med lækkert design og potentiale til at være blandt de bedste. Men den når ikke i mål. Se her hvorfor.


Seneste blogindlæg

Teaser billede

Tvangslukke spørgsmål: Hvad er den bedste løsning?

Hej Vi har mange åbne spørgsmål på Eksperten. Vi ville gerne tvangslukke dem - så et spørgsmål efter f.eks. 6 måneder lukkes. Men der er et par uklarheder som ville være gode at få lidt input til:...


Nyheder fra PC World

Teaser billede

Sådan siger du farvel til Facebook

Læs her, hvordan du dropper Facebook og i stedet anvender nogle brugervenlige alternativer, så du stadig kan være social på nettet.


Nyheder fra Computerworld

Teaser billede

Galleri: De fedeste håndholdte gennem 40 år

Her har du de mest banebrydende håndholdte computere gennem alle tider.


Kurser
Samarbejdspartnere

Udgiver · © 2012 IDG Danmark A/S · Hørkær 18 · 2730 Herlev · Tlf.: 77 300 300 · Fax: 77 300 301 · Brug af personoplysninger