【发布时间】:2010-04-12 10:24:41
【问题描述】:
如何编写正则表达式来验证多语言 Web 应用程序中的名称字段,我想验证非英语语言的名称字段,例如西班牙语或德语,我们需要确保没有人输入数字或特殊字符。我正在使用 .NET 2.0
我相信我们不能对非英语语言使用如下表达方式。
^[a-zA-Z]{1,20}$
任何帮助将不胜感激!
我得到了这个正则表达式,当我使用 Regex Builder 时它可以工作,但是当我在实际的 Web 应用程序中尝试它时它会失败:
^\p{L}[\p{L}\p{Pd}\x27]*\p{L}$
【问题讨论】:
-
怎么了? Ç被匹配?
-
简短回答:不要。地球上有一个绰号为“16 号公共汽车站”的人,您将阻止他们访问您的站点!来源:news.bbc.co.uk/1/hi/7522952.stm。因此,您将对域施加与现实世界中的实际限制不匹配的任意限制。为什么还需要验证呢?
-
@Martin:这很有见地!感谢分享链接,我一直反对这个,但现在我有一个参考:D
-
像这样毫无意义的验证只会添加更多代码,而这是您必须测试的代码。如果某人的名字中有数字,会发生什么?理查德三世?
-
使用 ^[A-Za-z]{0,7}$ ,因为此时匹配的组合比世界上的人还多。另外,它适用于我的名字和姓氏。
标签: c# .net multilingual