c# Regex -接受字符串中的空格
本文关键字:空格 字符串 Regex | 更新日期: 2023-09-27 18:09:41
我有一个需要对某些字段进行验证的应用程序。其中一个是姓氏,可以由两个单词组成。在我的正则表达式中,我必须接受这些空格,所以我尝试了很多事情,但我没有找到任何解决方案。
这是我的正则表达式:
@"^[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.
有什么想法吗?
-
表示字符范围,就像您使用A-Z
来描述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
被解析为范围a-z
:
@"^[a-zA-Zàéèêçñ's][a-zA-Zàéèêçñ'-'s]+$"
参见Regex Storm: [a-'s]
, [a'-'s]
[regulareexpression (@"^[a-zA-Z's]+$", ErrorMessage ="只允许字母字符和空格")]
这是