Avatar billede 7th Praktikant
18. juni 2004 - 15:27 Der er 9 kommentarer og
3 løsninger

Regexp replace pseudo kode

Jeg søger meget hjælp til at lave en regexp replace funktion, som kan fjerne følgende pseudo kode i en tekst: , , og [link=http://www.test.net][/link].

Omkring [link=http://www.test.net][/link], så fandt jeg www.regexlib.com/RETester.aspx?regexp_id=520, men den matcher på [link url="http://www.test.net"][/link]. Jeg prøvede så via Expression Tester at redigere i udtrykket, men det gik ikke særlig godt.

Det eneste jeg har er en funktion, som ikke virker :o)

function bbcode_reset(formElement)
{
reg = new RegExp((\[b\])([a-zA-Z0-9])(\[/\b\]) , "gi");
formElement.value = formElement.value.replace(reg , "");
}

Jeg prøver her at få den til at matche på [b]fdfs[b], så jeg ligesom har noget at tage fat på.
Avatar billede 7th Praktikant
18. juni 2004 - 15:33 #1
Ifølge http://www.regexlib.com/RETester.aspx matcher \[b\](.+?)\[/b\] på fdfs. Hvordan får jeg det indsat i funktionen? reg = new RegExp(\[b\](.+?)\[/b\] , "gi"); giver en fejl.
Avatar billede coderdk Praktikant
18. juni 2004 - 19:42 #2
reg = new RegExp("\[b\](.+?)\[/b\]" , "gi");
Avatar billede coderdk Praktikant
18. juni 2004 - 19:44 #3
Dine links tror jeg du kan lave med:
linkreg = new RegExp("\[link=([^\]]+)\]([^\[]+)\[/link\]" , "gi");
Avatar billede 7th Praktikant
18. juni 2004 - 20:05 #4
Dit svar kan jeg kun få til at fjerne følgende. 123 abc bliver til []123[] []ac[b]
Avatar billede coderdk Praktikant
18. juni 2004 - 21:53 #5
Prøv:

reg = new RegExp("(\[b\])(.+?)(\[/b\])" , "gi");
Avatar billede 7th Praktikant
18. juni 2004 - 22:53 #6
new RegExp("(\[b\])(.+?)(\[/b\])" , "gi"); for 123 abc får jeg []ab].

Jeg har fået lidt hjælp et andet sted, og har skrabet følgende sammen.

formElement.value = formElement.value.replace(/\[b\]/gi , "");
formElement.value = formElement.value.replace(/\[\/b\]/gi , "");
formElement.value = formElement.value.replace(/\[i\]/gi , "");
formElement.value = formElement.value.replace(/\[\/i\]/gi , "");
formElement.value = formElement.value.replace(/\[u\]/gi , "");
formElement.value = formElement.value.replace(/\[\/u\]/gi , "");

Der må være en lettere måde at skrive det på :)
Avatar billede coderdk Praktikant
18. juni 2004 - 22:57 #7
Prøv med:

formElement.value = formElement.value.replace(/\[\/?(b|i|u)\]/gi , "");

Eller:

reg = new RegExp("\[/?(b|u|i)\]" , "gi");
Avatar billede 7th Praktikant
18. juni 2004 - 23:02 #8
Dit RegExp("\[/?(b|u|i)\]" , "gi") manglede lige to \\, så virkede det :) Du kender vel ikke en side, hvor der står noget om de forskellige tegn og deres betydning omkring expressions?
Avatar billede 7th Praktikant
18. juni 2004 - 23:11 #9
Jeg har lige et sidste punkt :) Jeg er nu takket være din hjælp kommet frem til...

reg = new RegExp("\\[/?(b|i|link|u)\\]" , "gi");
formElement.value = formElement.value.replace(reg , "");

reg = new RegExp("\\[link\=(.+?)\\]" , "gi");
formElement.value = formElement.value.replace(reg , "");

Hvis du kunne sammenskrive de to regs, eller komme med et bud på det, ville det være genialt. Hvis ikke er det også ok :)
Avatar billede 7th Praktikant
18. juni 2004 - 23:15 #10
Den klarede jeg selv med new RegExp("\\[/?(b|i|link\=(.+?)|link|u)\\]" , "gi");

Takker for din fine hjælp :)
Avatar billede coderdk Praktikant
18. juni 2004 - 23:15 #11
Prøv:

reg = new RegExp("\\[/?(b|i|link(=.+)?|u)\\]" , "gi");
formElement.value = formElement.value.replace(reg , "");
Avatar billede coderdk Praktikant
18. juni 2004 - 23:16 #12
np :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester