名称,街道名称,城市名称等的正则表达式

huc*_*ius 5 c# regex validation asp.net-mvc

我使用asp.net mvc和c#编写Web应用程序.在表单中,用户应在不同字段中输入名称,街道名称和城市.

  1. 开始:输入的值必须以"字母"字符开头(无论语言是英语,中文还是法语或者什么都有.所以像é和中文字符等等都可以.但是字符如*¥@# 1等等是不允许的)
  2. 中间:与我先说的相同和空格(但不是两个空格之后).
  3. 结束:那就是我刚开始说的话.

这是对的:

  • 一个bc

  • Abcd ef

  • ABCDEF

这不正确:

  • 1ABC

  • 公元前A1

  • 1 2 3

  • abc(开始时的空间)

题:

  • 什么是正确的正则表达式?

  • 我该如何设定长度?

  • 在第二种情况下,我想允许数字0123456789(如字符)

这就是我所拥有的:'^ [a-zA-Z] [a-zA-Z] [a-zA-Z] $'

谢谢

Wik*_*żew 5

您希望验证仅包含以单个空格分隔的字母单词的字符串.

你可以使用正则表达式

^\p{L}+(?: \p{L}+)*$
Run Code Online (Sandbox Code Playgroud)

或者,如果允许任何whitepsace:

^\p{L}+(?:\s\p{L}+)*$
Run Code Online (Sandbox Code Playgroud)

请参阅正则表达式演示

要使它只匹配3个或更多字符的字符串,请使用

^(?=.{3})\p{L}+(?:\s\p{L}+)*$
 ^^^^^^^^
Run Code Online (Sandbox Code Playgroud)

细节

  • ^ - 开始一个字符串
  • (?=.{3}) =一个正向前瞻,在字符串开始后立即需要任何3个字符
  • \p{L}+ - 1个或多个Unicode字母
  • (?:\s\p{L}+)* - 零次或多次重复
    • \s - 任何空白
    • \p{L}+ - 1个或多个Unicode字母
  • $ - 字符串结尾

请注意,如果您需要在ASP.NET中使用它,只使用此正则表达式在服务器端进行验证,因为在客户端,JavaScript正则表达式可能无法正确处理此模式.