【问题标题】:Regular Expression for Alphabetic Letter with accent带重音的字母的正则表达式
【发布时间】:2010-12-23 07:42:54
【问题描述】:

我需要使用正则表达式在 c# 和 asp.net 中验证一个 texbox。

我需要允许:

  • 字母大写和小写或任意组合
  • 重音字母,例如:èèéàù ...
  • 数字
  • 只有一个空格“”

我需要点不允许:

  • 任何特殊字符,例如:|!"£$%&/() ...

有什么想法吗?感谢您的帮助

【问题讨论】:

    标签: c# asp.net regex


    【解决方案1】:

    这可能是一个开始

    ^([\w\d]+[ ]?)+$
    

    \d 匹配数字

    \w 匹配“单词字符”。 .NET RegEx 将 unicode 字符视为单词字符。见:http://regexlib.com/CheatSheet.aspx

    我不确定您所说的“一个空格”是什么意思。此表达式允许单词之间有一个空格,但不能有两个空格。

    【讨论】:

    • 这个模式是Catastrophic Backtracking 的一个很好的例子——尝试匹配abcdefghijklmnopqrstuvwxyz!,然后看着你的电脑炸:)。与我自己的模式^\w*(\s\w*)*$ 类似的模式会执行得更好——它只允许一种匹配输入的方式(请注意,在这种情况下空格不是可选的)。另外,请注意\w 已经包含\d。
    • 哦,对不起。应该是^\w*(\s\w+)*\s?$ 之类的东西,看起来也很奇怪,应该可以做得更好。
    【解决方案2】:

    如果验证发生在服务器端,您可以使用该模式:

    ^\w*(\s\w*)?$
    

    .Net 中的\w 支持 Unicode - 它应该包含所有字母。

    请注意,\w 还包括下划线和其他单词连接符。您可以使用[\p{L}\p{Nd}] 而不是\w 来禁止它们。

    另请参阅:Character Classes

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多