C# Regex - 接受字符串中的空格

标签 c# regex

我有一个应用程序需要对某些字段进行一些验证。其中之一是姓氏,可以由 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.

伙计们有什么想法吗?

最佳答案

- 表示一个字符范围,就像您使用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。就个人而言,尽管我总是尽量避免转义,因为恕我直言,它会变得困惑并且不必要地延长表达式的长度。

关于C# Regex - 接受字符串中的空格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16077560/

相关文章:

c# - 如何提交表单然后在完成时调用 jquery 函数而不重定向 MVC/C#/Jquery

c# - C# 编译器是否将 Color Color 规则错误地用于 const 类型成员?

c# - 如何在 C# 中实现 C++ 风格的函数指针?,不使用委托(delegate)

regex - 如何构建正则表达式来解析逗号分隔值但忽略双引号中的逗号?

php - 不允许在文本区域中使用 href 标签

c# - 在 Windows 7 中更改屏幕保护程序设置时应用程序卡住 - System.Threading.Timer 是罪魁祸首?

c# - 更新到VS 16.9.0 : Feature 'init-only setters' is not available in C# 7. 3之后。请使用语言版本9.0或更高版本

python正则表达式选择整个单词

c# - 正则表达式替换除斜杠以外的所有特殊字符?

Webmethods 中的正则表达式修饰符