C# C语言中的正则表达式问题#
我正在尝试编写一个正则表达式,它将检查给定字符串是否为“有效”名称。从数据库中检索名称字符串,然后检查它们是否包含奇怪的字符。(因为这是针对瑞典的系统,所以我仍然需要包括一些在瑞典名字中常见的奇怪字符。) 问题是,这会使它输入的每一个字符串都失败。我的猜测是正则表达式没有正确终止,如果字符串结尾失败。但我不明白为什么 因此,我的正则表达式如下所示——我在示例中尝试了两个正则表达式字符串:C# C语言中的正则表达式问题#,c#,regex,C#,Regex,我正在尝试编写一个正则表达式,它将检查给定字符串是否为“有效”名称。从数据库中检索名称字符串,然后检查它们是否包含奇怪的字符。(因为这是针对瑞典的系统,所以我仍然需要包括一些在瑞典名字中常见的奇怪字符。) 问题是,这会使它输入的每一个字符串都失败。我的猜测是正则表达式没有正确终止,如果字符串结尾失败。但我不明白为什么 因此,我的正则表达式如下所示——我在示例中尝试了两个正则表达式字符串: public static bool NameCheck(string name) {
public static bool NameCheck(string name)
{
if(name == "" || name == " " || name == null)
{
return false;
}
//Regex regex = new Regex(@"/^[a-zåäöÅÄÖáéóúýíüÁÉÓÚÝÍÜ\-\.]+([---\s][a-zåäöÅÄÖáéóúýíüÁÉÓÚÝÍÜ\-\.]+)+/i");
Regex regex = new Regex(@"/^[a-zåäöÅÄÖáéóúýíüÁÉÓÚÝÍÜ\-\.]+([---\s][a-zåäöÅÄÖáéóúýíüÁÉÓÚÝÍÜ\-\.]+)+$/i");
return regex.IsMatch(name);
}
有人要吗
注意:我通过在正则表达式检查之前拆分字符串来解决系统中的问题,这样我就不必处理空白,但我很好奇正则表达式为什么不工作。C#正则表达式不应该使用“/”分隔符,所以应该使用以下语法:
Regex regex = new Regex(@"^[a-zåäöÅÄÖáéóúýíüÁÉÓÚÝÍÜ\-\.]+([---\s][a-zåäöÅÄÖáéóúýíüÁÉÓÚÝÍÜ\-\.]+)+$",
RegexOptions.IgnoreCase);
[a-zåäýýÁÓÚáÜ\-\.]
那你就永远不会有比约恩或乌卡斯了?考虑<代码> [\W-] ,然后让正则表达式考虑Unicode定义为alpha数值?代码>\w也将与[0-9]匹配,但您始终可以对照第二个正则表达式中的那些进行检查
[-\s]
说什么?那么
[\s-]
他们实际上不能使用它们。这基本上是一个sed/perl/Javascript的东西,一般来说与正则表达式无关。或者在其他实现中。我会。。。实际上我曾经试过,但最后没有包括RegexOptions.IgnoreCase。谢谢你根本不应该这样做。当你的第一个法国移民在他/她的名字中出现一个字母时会发生什么?或者别的什么。我有一个奇怪的名字,每次都不能输入我的名字,这很糟糕。最后是客户的电话。不过我同意你的看法。毕竟,当试图保持数据库不受奇怪字符的影响时,这是一件相当复杂的事情。(尤其是在没有真正的政策的情况下。)