用于验证包含字母和数字组合的字符串的正则表达式

时间:2013-05-01 08:26:03

标签: c# .net regex

我需要一个正则表达式来检查字符串是否包含字母和数字的组合。不允许使用特殊字符和空格。我的字符串应包含至少一个字符和一个字母

3 个答案:

答案 0 :(得分:4)

描述

这将

  • 找到所有至少包含一个字母和一个数字的字符串
  • 并且只包含任何顺序的字母和数字

^(?=[^\s]*?[0-9])(?=[^\s]*?[a-zA-Z])[a-zA-Z0-9]*$

enter image description here

实施例

请注意,对于其中一些示例,我删除了表达式末尾的$,因为示例中的源字符串确实包含很多行。要正确验证字符串,您需要删除多行匹配并使用上面显示的$字符。

Live Example

示例文字

11
22
33
1
2
3
1a
2b
3c
a1
b2
c3
1a1a
2b2b
3b3b
1a1
2b2
3b3
a1a
b2b
c3c
a
b
c
aa
bb
cc

C#代码示例

using System;
using System.Text.RegularExpressions;
namespace myapp
{
  class Class1
    {
      static void Main(string[] args)
        {
          String sourcestring = "source string to match with pattern";
          Regex re = new Regex(@"^(?=[^\s]*?[0-9])(?=[^\s]*?[a-zA-Z])[a-zA-Z0-9]*",RegexOptions.IgnoreCase | RegexOptions.IgnorePatternWhitespace | RegexOptions.Multiline | RegexOptions.Singleline);
          MatchCollection mc = re.Matches(sourcestring);
          int mIdx=0;
          foreach (Match m in mc)
           {
            for (int gIdx = 0; gIdx < m.Groups.Count; gIdx++)
              {
                Console.WriteLine("[{0}][{1}] = {2}", mIdx, re.GetGroupNames()[gIdx], m.Groups[gIdx].Value);
              }
            mIdx++;
          }
        }
    }
}

找到匹配

[0][0] = 1a
[1][0] = 2b
[2][0] = 3c
[3][0] = a1
[4][0] = b2
[5][0] = c3
[6][0] = 1a1a
[7][0] = 2b2b
[8][0] = 3b3b
[9][0] = 1a1
[10][0] = 2b2
[11][0] = 3b3
[12][0] = a1a
[13][0] = b2b
[14][0] = c3c

摘要

这是有效的,因为表达式向前看以验证它确实可以在字符串中找到一个数字和一个字母,然后匹配所有字母和数字

答案 1 :(得分:3)

为了兼容unicode:

^[\pL\pN]+$

\pL代表任何字母
\pN代表任何数字

答案 2 :(得分:2)

仅匹配单个0-9或a-z或A-Z。

[0-9a-zA-Z]

匹配1个或更多

[0-9a-zA-Z]\+

如果您对整行是字母数字字符感兴趣。

^[0-9a-zA-Z]\+$

^匹配行的开头,$匹配行的结尾。