2011-05-07 80 views
2

德语字符我使用RegularExpressionValidator控制与asp.net允许在地址

[http(s)?://]*([\w-]+\.)+[\w-]+(/[\w- ./?%&=]*)? 

正则表达式来验证地址。我需要让德国的字符

(A,A,E,E,O,O-,U,U,SS)

在网址

。什么应该是准确的正则表达式来允许这些字符?

+0

作为土生土长的德国人,我从来没有听说过一个德国的字符'É'或'é'的。其实,我在学校的法语课上听说过他们。 – 2011-05-07 21:54:39

+0

@Uwe Keim感谢您指出这一点。你知道,域名中允许使用哪些德文字符? – Sampath 2011-05-08 03:36:20

+0

如果它是一个“[变音域名](http://en.wikipedia.org/wiki/Internationalized_domain_name)”,则应该包含您允许的所有名称(除了'É'和'é')。此外,还有一个相当新的角色,它是'ß'的大写版本。 (见[这个德国维基百科部分](http://de.wikipedia.org/wiki/%C3%9F#Gro.C3。9Fschreibweise_mit_Versal-Eszett)关于大写字母) – 2011-05-08 06:49:57

回答

1

我希望您知道使用正则表达式进行URL验证并不容易,因为有许多有效的URL变体。例如参见question

首先你的正则表达式有几个缺点(这仅仅是一个快速检查后,也许不完整)

here for online check on Regexr

不匹配

http://RegExr.com?2rjl6]

为什么在第一个点之后只允许\w-

,但它确实匹配

hhhhhhppth ?????? HT://stackoverflow.com

你一开始[http(s)?://]拿什么匹配任何字符的定义字符组内(您想probaly病房,而不是*(?:http(s)?://)?

要回答你的问题。

用这些字母创建一个字符组,并将其放在您想要允许的位置。

[äÄÉéöÖüÜß] 

使用方法如下

(?:https?://)?([äÄÉéöÖüÜß\w-]+\.)+[äÄÉéöÖüÜß\w-]+(/[-äÄÉéöÖüÜß\w ./?%&=]*)? 

其他提示

-文字组内必须在开始或结束或需要进行转义。

(s)?s?

+0

优秀。我的原始问题已解决。我将正则表达式更改为(?:http(s)?://)?([äÉééÖÖÜß\ w-] + \。)+ [\ w-] +(/ [\ w- ./?% & =] *) ?它现在允许德文字符,也不允许hhhhhhppth ?????? ht://stackoverflow.com。但是,你指出了一个非常重要的事情,它不符合http://RegExr.com?2rjl6](查询字符串),这是非常正常的。我需要在上面的正则表达式中进行什么更改以允许查询字符串? – Sampath 2011-05-08 03:44:35

+0

正如我在第一句中所说的那样,它不是微不足道的,这里已经讨论了好几次了(我在那里也提供了一个解决方案的链接)。一个简单的答案是:将'?'添加到字符类中,但我确定有其他有效的URL不会被匹配,也许更好的链接是这个[stackoverflow.com/questions/206059/php-validation-正则表达式换URL](http://stackoverflow.com/questions/206059/php-validation-regex-for-url)。看看那里的解决方案并添加额外的角色。 – stema 2011-05-08 06:48:02