我有一个应用程序,需要对某些字段进行一些验证。其中一个是姓氏,可以由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.
任何想法的人?
答案 0 :(得分:10)
-
表示字符范围,就像使用A-Z
描述 A和Z 之间的任何字符一样。你的正则表达式使用引擎试图解释为ñ和\ s 之间的任何字符的ñ-\s
- 然后注意到\s
没有多少意义因为\s
本身只是任何空格字符的缩写。
这就是错误的来源。
要摆脱这种情况,如果要包含{{1},则应始终将-
放在角色类的结束 中文字字符:
-
这样,引擎知道@"^[a-zA-Zàéèêçñ\s][a-zA-Zàéèêçñ\s-]+$"
不是字符范围,而是分别是\s-
和\s
两个字符。
另一种方法是转义-
字符:
-
现在引擎将@"^[a-zA-Zàéèêçñ\s][a-zA-Zàéèêç\-\s]+$"
解释为不是字符范围,而是任何字符ñ\-\s
,ñ
或-
。就个人而言,虽然我总是试图尽可能避免逃避,因为恕我直言,它混乱起来,不必要地延长了表达的长度。
答案 1 :(得分:4)
答案 2 :(得分:0)
[RegularExpression(@" ^ [a-zA-Z \ s] + $",ErrorMessage ="只允许使用字母字符和空格。")]
这有效