繁体   English   中英

C#正则表达式-接受字符串中的空格

[英]C# Regex - Accept spaces in a string

我有一个需要对某些字段进行验证的应用程序。 其中之一是姓氏,可以由2个单词组成。 在我的正则表达式中,我必须接受这些空格,所以我尝试了很多事情,但没有找到任何解决方案。

这是我的正则表达式:

@"^[a-zA-Zàéèêçñ\s][a-zA-Zàéèêçñ-\s]+$"

\\s通常用于空格,但是它不起作用,并且我收到此错误消息:

parsing "^[a-zA-Zàéèêçñ\s][a-zA-Zàéèêçñ-\s]+$" - Cannot include class \s in character range.

大家有想法吗?

-表示字符范围,就像使用AZ来描述A和Z之间的任何字符一样 您的正则表达式使用ñ-\\s ,引擎会尝试将其解释为ñ和\\ s之间的任何字符 -然后注意, \\s在那里并没有多大意义,因为\\s本身只是的缩写 。任何空白字符。

这就是错误的来源。

要摆脱这一点,如果要包含-文字字符,则应始终字符类末尾放置-

@"^[a-zA-Zàéèêçñ\s][a-zA-Zàéèêçñ\s-]+$"

这样,引擎就知道\\s-不是字符范围,而是两个字符\\s-分开。

另一种方法是转义-字符:

@"^[a-zA-Zàéèêçñ\s][a-zA-Zàéèêç\-\s]+$"

因此,现在引擎将ñ\\-\\s解释为不是字符范围,而是任何ñ-\\s字符 就个人而言,尽管我总是尽量避免转义,因为恕我直言,它会变得混乱并且不必要地延长表达式的长度。

您需要转义最后一个-字符ñ-\\s的解析范围为az

@"^[a-zA-Zàéèêçñ\s][a-zA-Zàéèêçñ\-\s]+$"

另请参见Regex Storm: [a-\\s][a\\-\\s]

[RegularExpression(@“ ^ [a-zA-Z \\ s] + $”,ErrorMessage =“仅允许使用字母和空格。”]]

这有效

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM