我正在尝试编写一个正则表达式来检查,因此给定的字符串是“有效”名称。从数据库中检索名称字符串,然后检查它们是否包含奇怪的字符。 (因为这是一个瑞典语系统,我仍然需要包含一些瑞典语中常见的奇怪字符。))
问题是这会使每一个字符串失败。我的猜测是正则表达式没有正确终止,如果没有结束字符串。但我无法弄清楚原因。
所以我的正则表达式如下所示 - 我在示例中尝试了两个正则表达式字符串:
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);
}
任何参赛者?
注意:我正在通过在正则表达式检查之前拆分字符串来解决系统中的问题所以我不必处理空格,但我很好奇为什么正则表达式不起作用。
答案 0 :(得分:5)
C#正则表达式不应该使用“/”分隔符,因此您应该使用以下语法:
Regex regex = new Regex(@"^[a-zåäöÅÄÖáéóúýíüÁÉÓÚÝÍÜ\-\.]+([---\s][a-zåäöÅÄÖáéóúýíüÁÉÓÚÝÍÜ\-\.]+)+$",
RegexOptions.IgnoreCase);
答案 1 :(得分:1)
[a-zåäöÅÄÖáéóúýíüÁÉÓÚÝÍÜ\-\.]
所以你永远不会有任何Bjørn-s或Łukasz-es?考虑[\w.-]
然后让正则表达式考虑Unicode定义为alpha-numerics? \w
也会匹配[0-9],但您可以随时检查第二个正则表达式中的那些。
[---\s]
说什么?那么[\s-]
。