[英]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
字符 。 就个人而言,尽管我总是尽量避免转义,因为恕我直言,它会变得混乱并且不必要地延长表达式的长度。
[RegularExpression(@“ ^ [a-zA-Z \\ s] + $”,ErrorMessage =“仅允许使用字母和空格。”]]
这有效
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.