c#正则表达式,只允许数字和字母不起作用

c#正则表达式,只允许数字和字母不起作用,c#,regex,asp.net-mvc,expression,C#,Regex,Asp.net Mvc,Expression,我正在使用ASP.NETMVC 我需要一个只允许数字和字母的正则表达式,而不允许空格或“,;:~^”之类的。简单的数字和字母 另一件事:2个字符不能连续重复 所以我可以有123123,但不能有1123456 我已经做到了: Regex ER1 = new Regex(@"(.)\\1", RegexOptions.None); Regex ER2 = new Regex(@"[A-Z0-9]", RegexOptions.IgnoreCase); 我不能在一个表达式中表达所有内容,我仍然有一

我正在使用ASP.NETMVC

我需要一个只允许数字和字母的正则表达式,而不允许空格或“,;:~^”之类的。简单的数字和字母

另一件事:2个字符不能连续重复

所以我可以有123123,但不能有1123456

我已经做到了:

Regex ER1 = new Regex(@"(.)\\1", RegexOptions.None);

Regex ER2 = new Regex(@"[A-Z0-9]", RegexOptions.IgnoreCase);
我不能在一个表达式中表达所有内容,我仍然有一些字符通过

以下是我的全部测试代码:

class Program
{
    static void Main(string[] args)
    {
        string input = Console.ReadLine();

        Regex ER1 = new Regex(@"(.)\\1", RegexOptions.None);

        Regex ER2 = new Regex(@"[A-Z0-9]", RegexOptions.IgnoreCase);

        if (!ER1.IsMatch(input) && ER2.IsMatch(input))
            Console.WriteLine( "Casou");
        else
            Console.WriteLine( "Não casou");

            Console.ReadLine();
    }
}
我发现这些表达式非常复杂,我非常乐意得到一些帮助。

让我们试试这个:

@"^(([0-9A-Z])(?!\2))*$"
解释:

^               start of string
 (              group #1
   ([0-9A-Z])   a digit or a letter (group #2)
   (?!\2)      not followed by what is captured by second group ([0-9A-Z])
 )*             any number of these
$               end of string

组称为


(LastCoder的表达式是等效的)

类似的东西应该可以工作

@"^(?:([A-Z0-9])(?!\1))*$"

听起来像是你设置了邪恶的密码限制。不要那样做。嗯,我实际上不知道代码将如何使用。我的老板需要它。我做到了。很简单:D但是如果我现在猜你提到了,我想这就是他需要它的原因。哈哈,你是怎么认识这个人的?你有一个额外的反斜杠,从一根普通的弦开始,你的弦也不管用。Regex ER=new Regex(@“^([0-9A-Z])(?!\\2))*$”,RegexOptions.None);不让我打字。不过还是谢谢你,伙计。好啊这个现在很好用。据我所知。非常感谢你。我想我会在工作中获得一颗金星的,哈哈哈。感谢大家的努力、时间和帮助。巴西的问候。塞萨尔对不起,我来这里是为了正则表达式,不是为了C。您的评论中确实有不平衡的括号:
[RegularExpression(@“^([0-9A-Z])(?!\2))*$”
我用这种方法测试了它,但它不起作用:我不知道我是否做错了什么。静态void Main(string[]args){string input=Console.ReadLine();Regex ER=new Regex(@“^(?([A-Z0-9])(?!\1))*$”,RegexOptions.None);if(ER.IsMatch(input))Console.WriteLine(“Casou”);else Console.WriteLine(“Não Casou”);Console.ReadLine();}它不以这种方式接受字母。只有数字。但是圆点和Coma也被屏蔽了。好啊我明白了。现在这几乎是完美的。唯一缺少的是“禁止重复”的东西。例如如果我输入123123,它应该通过,但如果我写1233,它就不会通过。不应该让我连续重复两个字符。你的答案在我上面给出的例子中非常有效。但我不能让它作为一个属性工作。为什么会这样?[Required(ErrorMessage=“Required”)][RegularExpression(@“^([0-9A-Z])(?!\2))*$”,ErrorMessage=“Required”)]