Hejsan, jag använder mig av RegExp till "taggar" för användarna, och för att användarna inte ska "förstöra" html koden som bildas genom att skriva andra tecken osv. så kör jag i RegExp koden något som kollar att det är bara vissa tecken som får finnas mellan taggarna dom skriver ut.
Väldigt enkel kod, så den släpper igenom a-z, A-Z, 0-9 och _ -
Men innan jag ändrade i min registreringskoden, så kunde man registrera sig med användarnamn som kunde ha ` ´ (vet inte hur de stavas) och mellanslag. Nu till min fråga, hur låter jag RegExp´n släppa igenom tecken med ´ på och mellanslag?
Hrm, märkligt. Jag har testat allt möjligt med att trycka in den koden, och ändrat fram och tillbaka, men ingen inverkan, det fungerar fortfarande inte att skriva é eller annat tecken med ´på.
Väldigt enkel kod, så den släpper igenom a-z, A-Z, 0-9 och _ -
Nja... Den släpper igenom a-z, /, A-Z, /, 0-9, /, _, /-/, - och /.
\s matchar alla typer av mellanrum, alltså mellanslag, tabbar, radbrytingar och så vidare. Ifall du bara vill tillåta mellanslag så får du använda mellanslag.
Eftersom bindestreck används för att ange intervall så måste du escape:a det för att ange tecknet bindestreck.
För att släppa igenom tecken med accenter så får du ange varje tecken separat.
Väldigt enkel kod, så den släpper igenom a-z, A-Z, 0-9 och _ -
Nja... Den släpper igenom a-z, /, A-Z, /, 0-9, /, _, /-/, - och /.
\s matchar alla typer av mellanrum, alltså mellanslag, tabbar, radbrytingar och så vidare. Ifall du bara vill tillåta mellanslag så får du använda mellanslag.
Eftersom bindestreck används för att ange intervall så måste du escape:a det för att ange tecknet bindestreck.
För att släppa igenom tecken med accenter så får du ange varje tecken separat.
Exempel:
[\w \-éèóòáà]
Hrm, okej.. jo, jag tänkte på de viset också innan, dvs. att jag angav det så här:
[a-z/A-Z/0-9/_/-/-/é/]
Det fungerade inte, men eftersom du nämnde detta igen, så tänkte jag att jag kanske gjort fel och testade igen, men.. utan något vidare resultat, den släpper igenom allt annat än text med é.
Vet inte riktigt varför det blir fel, men du får nog visa mer kod för att kunna komma vidare.
Hrm, konstigt. Här kommer hela koden:
Function nCode(text)
text = server.HTMLEncode(text)
text = Replace(text,vbCrLf,"<br>")
With New RegExp
.Global = true
.IgnoreCase = true
.Pattern="\&"
text = .Replace(text,"&")
.Pattern="\< *user *>([a-z/A-Z/0-9/_/-/-/é/]*?)</user>"
text = .Replace(text,"<a href=""search_user.asp?ns_user=$1"">$1</a>")
text = .Replace(text,""&year(date)&"")
.Pattern = "([url]http://[/url]|[url]https://[/url]|[url]ftp://[/url])([a-z/A-Z/0-9/./_/-/-/%/?/:/~/*/(/)/!/=/&]+)"
Set objMatches=.Execute(text)
End With
Set RegExp = Nothing
strResult=""
lngPos=1
For each objMatch in objMatches
If objMatch.FirstIndex>lngPos Then
strResult=strResult & Mid(text, lngPos, objMatch.FirstIndex-lngPos+1)
End If
strFound=objMatch
If len(strFound) > 50 Then
lank = left(strFound, 25) & "..." & right(strFound, 15)
strFound = "<a href="""&strFound&""" target=""_blank"">"&lank&"</a>"
else
strFound = "<a href="""&strFound&""" target=""_blank"">"&strFound&"</a>"
end if
strResult=strResult & strFound
lngPos=objMatch.FirstIndex+objMatch.Length+1
Next
strResult=strResult & Mid(text, lngPos)
nCode = strResult
End Function