德语字符我使用RegularExpressionValidator
控制与asp.net允许在地址
[http(s)?://]*([\w-]+\.)+[\w-]+(/[\w- ./?%&=]*)?
正则表达式来验证地址。我需要让德国的字符
在网址(A,A,E,E,O,O-,U,U,SS)
。什么应该是准确的正则表达式来允许这些字符?
德语字符我使用RegularExpressionValidator
控制与asp.net允许在地址
[http(s)?://]*([\w-]+\.)+[\w-]+(/[\w- ./?%&=]*)?
正则表达式来验证地址。我需要让德国的字符
在网址(A,A,E,E,O,O-,U,U,SS)
。什么应该是准确的正则表达式来允许这些字符?
我希望您知道使用正则表达式进行URL验证并不容易,因为有许多有效的URL变体。例如参见question。
首先你的正则表达式有几个缺点(这仅仅是一个快速检查后,也许不完整)
见here for online check on Regexr
不匹配
为什么在第一个点之后只允许\w
和-
?
,但它确实匹配
hhhhhhppth ?????? HT://stackoverflow.com
你一开始[http(s)?://]
拿什么匹配任何字符的定义字符组内(您想probaly病房,而不是*
后(?:http(s)?://)
和?
要回答你的问题。
用这些字母创建一个字符组,并将其放在您想要允许的位置。
[äÄÉéöÖüÜß]
使用方法如下
(?:https?://)?([äÄÉéöÖüÜß\w-]+\.)+[äÄÉéöÖüÜß\w-]+(/[-äÄÉéöÖüÜß\w ./?%&=]*)?
其他提示
的-
文字组内必须在开始或结束或需要进行转义。
(s)?
是s?
优秀。我的原始问题已解决。我将正则表达式更改为(?:http(s)?://)?([äÉééÖÖÜß\ w-] + \。)+ [\ w-] +(/ [\ w- ./?% & =] *) ?它现在允许德文字符,也不允许hhhhhhppth ?????? ht://stackoverflow.com。但是,你指出了一个非常重要的事情,它不符合http://RegExr.com?2rjl6](查询字符串),这是非常正常的。我需要在上面的正则表达式中进行什么更改以允许查询字符串? – Sampath 2011-05-08 03:44:35
正如我在第一句中所说的那样,它不是微不足道的,这里已经讨论了好几次了(我在那里也提供了一个解决方案的链接)。一个简单的答案是:将'?'添加到字符类中,但我确定有其他有效的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
作为土生土长的德国人,我从来没有听说过一个德国的字符'É'或'é'的。其实,我在学校的法语课上听说过他们。 – 2011-05-07 21:54:39
@Uwe Keim感谢您指出这一点。你知道,域名中允许使用哪些德文字符? – Sampath 2011-05-08 03:36:20
如果它是一个“[变音域名](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