【问题标题】:^[A-Za-Z ][A-Za-z0-9 ]* regular expression?^[A-Za-Z ][A-Za-z0-9 ]* 正则表达式?
【发布时间】:2010-12-11 19:47:55
【问题描述】:

正则表达式^[A-Za-Z ][A-Za-z0-9 ]* 描述“第一个字母应该是字母,其余字母可能是字母数字”。但是我如何也允许特殊字符?当我输入“C#”时,它会引发错误。

如何输入特殊字符,首字母应为字母?

【问题讨论】:

  • 这也应该被标记为正则表达式
  • @joemoe:我为你标记了“正则表达式”。
  • 请注意,键入时,它是“第一个字符应该是字母或空格...”

标签: c# regex


【解决方案1】:

目前给出的很多答案都很好,但你必须清楚地定义你想要的究竟是什么。

如果您想要一个字母字符后跟任意数量的非空白字符(请注意,它还包括数字!)那么您应该使用这个:

^[A-Za-z]\S*$

如果您只想包含字母数字字符和某些符号,请使用:

^[A-Za-z][A-Za-z0-9!@#$%^&*]*$

您的原始问题看起来您也尝试包含空格字符,因此您可能想要这样的内容:

^[A-Za-z ][A-Za-z0-9!@#$%^&* ]*$

这就是我的最终答案!

我建议花一些时间来了解更多关于正则表达式的知识。它们是自切片面包以来最棒的东西!

试试这个syntax reference 页面(这个网站总体来说非常好)。

【讨论】:

  • @Peter Di Cecco:你忘了 0-9。
【解决方案2】:

此表达式将强制第一个字母为字母,其余字符为字母数字或以下任何特殊字符:@,#,%,&,*

^[A-Za-z][A-Za-z0-9@#%&*]*$

【讨论】:

  • @Surya sasidhar:好的,我修改了正则表达式以包含 @,%,&,*。
  • @Surya sasidhar:你想允许空格吗?标题中的原始正则表达式似乎允许空格。
  • @Xinus:不。 * 在字符类中时不需要转义。
  • 如何在其中添加空格?
【解决方案3】:

试试这个:

^[A-Za-z ].*

【讨论】:

  • 乔莫先生不作为表达
【解决方案4】:

怎么样

^[A-Za-z]\S*

一个字母后跟 0 个或多个非空格字符(将包括所有特殊符号)。

【讨论】:

    【解决方案5】:

    首先必须是字母,然后目标字符串中不允许使用点。 下面是代码。

            string input = "A_aaA";
    
            // B
            // The regular expression we use to match
            Regex r1 = new Regex("^[A-Za-z][^.]*$"); //[\t\0x0020] tab and spaces.
    
            // C
            // Match the input and write results
            Match match = r1.Match(input);
            if (match.Success)
            {
                Console.WriteLine("Valid: {0}", match.Value);
    
            }
            else
            {
                Console.WriteLine("Not Match");
            }
    
    
            Console.ReadLine();
    

    【讨论】:

      【解决方案6】:

      此表达式将检查第一个字母是否为字母,其余字符是否为字母数字或以下任何特殊字符:@,#,%,&,

      ^[A-Za-z][A-Za-z0-9@#%&\*]*$
      

      【讨论】:

        【解决方案7】:

        这个表达式只得到数字

            If Regex.IsMatch(mystring, "^[A-Za-z ].*|\s") Then
                MessageBox.Show("please fill the box", "Error", MessageBoxButtons.OK, MessageBoxIcon.Warning)
               
            ElseIf (mystring = "") Then
                MessageBox.Show("please fill the box", "Error", MessageBoxButtons.OK, MessageBoxIcon.Warning)
              
            End If
        

        【讨论】:

          【解决方案8】:
          ^[A-Za-z](\W|\w)*
          

          (\W|\w) 将确保后面的每个字母都是单词(\w)或非单词(\W

          您也可以使用.* 代替(\W|\w)*,其中. 表示绝对类似于(\w|\W) 的任何东西

          【讨论】:

          • 这与“^[A-Za-z].*”甚至“^[A-Za-z]”有何不同?
          • @Xinus: 字符类 [\W|\w] 表示单词字符,|字符或非单词字符。如果您将方括号更改为括号,则表示您声称的内容。但它仍然可以更简单、更优雅地表达。
          • @Asaph:我对正则表达式没有太多经验...我认为您说的听起来合乎逻辑,我将其更改为括号...
          • @paxdiablo: "^[A-Za-z]" 只会匹配第一个字符,而不是整个单词。 “^[A-Za-z].*” 可以正常工作,正如 Xinus 在编辑后所说的那样。
          • @Xinus 这个答案可能不正确。初始正则表达式匹配一个有效的 C 标识符。不幸的是,此解决方案将匹配“FOO\n\n\n”以及“C#”。
          猜你喜欢
          • 2015-01-07
          • 2021-11-09
          • 1970-01-01
          • 1970-01-01
          • 2019-12-17
          • 1970-01-01
          • 2018-08-27
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多