C#Regex – 接受字符串中的空格
我有一个应用程序,需要对某些字段进行一些validation。 其中一个是姓氏,可以由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
本身只是一个缩写任何空白字符。
这就是错误的来源。
要摆脱这种情况,你应该总是把-
在你的角色类的末尾 ,如果你想包含-
文字字符:
@"^[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 =“只允许使用字母字符和空格。”)]
这很有效