[C# .NET] Regex levert verschillend resultaat

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • PdeBie
  • Registratie: Juni 2004
  • Laatst online: 17-09 17:46
Hey allen,

ik heb het rare probleem dat mijn regular expression in een Regex tester een match oplevert op mijn input, maar niet in mijn (in C# gebouwde) website.

Het gaat om de volgende Regex:
^[\w\s\P{M}\p{M}]*

geteste input strings: test, test123, tést

met de volgende online regextester leveren alledrie de input strings een match:
http://www.iowacomputergurus.com/free-products/regular-expression-tester.aspx

Echter, als ik een RegularExpressionValidator opbouw met dezelfde regex krijg ik enkel bij 'test' en 'test123' een match en bij 'tést' niet.

opbouw van mijn regex-validator:
<asp:RegularExpressionValidator ID="revPageTitleNL" runat="server" ControlToValidate="tbPageTitleNL" ValidationExpression="^[\w\s\P{M}\p{M}]*" CssClass="error" ErrorMessage="Dit is geen geldige pagina titel" />

Wie kan dit verklaren? :?

Acties:
  • 0 Henk 'm!

  • HuHu
  • Registratie: Maart 2005
  • Niet online
Blijkbaar kan 'ie niet omgaan met niet-ASCII tekens.

Acties:
  • 0 Henk 'm!

  • PdeBie
  • Registratie: Juni 2004
  • Laatst online: 17-09 17:46
blijkbaar, want als ik een Regex object maak met daarin de regular expression doet hij het wel. |:(

Regex r = new Regex("^[\\w\\s\\p{L}\\p{M}*]*$");
bool b = r.IsMatch(inpPageTitleNL.Text);


let wel: ik heb de regular expression iets aangepast. i.p.v. \P{M}\p{m}* gebruik ik nu \p{L}\\p{M}*
Dit omdat het bij de tweede regex niet uitmaakt hoe de input string encoded is. (bron: http://www.regular-expressions.info/unicode.html)

Dus ik maak gewoon een custom validator aan die met deze regex de input string valideert. Probleem opgelost :)

[ Voor 10% gewijzigd door PdeBie op 07-01-2010 14:55 . Reden: bronvermelding ]