【问题标题】:Regex is not working in c# but working in javascript正则表达式在 c# 中不起作用,但在 javascript 中起作用
【发布时间】:2018-01-19 06:04:11
【问题描述】:

我正在尝试验证字符串不应该以某个字符开头并且不应该包含 .

[Required]
[Display(Name = "First name")]
[MaxLength(50)]
[RegularExpression(@"(?=(^(?!.*[><]).*$))(?=(^(?![@\+\-=\*]).*))", ErrorMessage = "firstname"+ Constants.DisplayMessage)]
public string firstname { get; set; }

这个正则表达式在 javascript 中工作。但它在 c# 中不起作用。我已经花了将近 1 个小时,但没有结果请帮助我。 您还尝试使用(^(?!.*[&gt;&lt;]).*$)|(^(?![@\+\-=\*]).*) 这个正则表达式。但它不起作用。 我不擅长正则表达式,所以请帮助我。

【问题讨论】:

  • 这个正则表达式是干什么用的?你对表达式中间的 $ 有什么期望?
  • 请提供一些关于这个正则表达式应该做什么的背景。您甚至可以在这两个地方使用更简单的模式。
  • @AlexSeleznyov 你可以使用regexr.com 它将帮助你理解我想要做什么。
  • @TimBiegeleisen 不能包含 并且不能以 @、-、=、* 字符开头
  • stackoverflow.com/questions/48295781/… 请检查此答案一次,它可能会有所帮助。

标签: javascript c# regex model-view-controller


【解决方案1】:

根据您的描述,正则表达式需要做什么,以下模式应该可以工作:

^(?![@=*-])(?!.*[<>]).*$

解释:

^
(?![@=*-])    from the start of string, assert that @=*- is not the first character
(?!.*[<>])    also assert that <> does not appear anywhere in the string
.*            then match anything (our assertions having be proven true)
$

Demo

此模式也适用于 C#,您可以通过查看下面的第二个演示来了解。

C# Demo

【讨论】:

  • 谢谢,我正在我的 c# 代码上测试它,给我 5 分钟。
  • 它适用于 javascript 但不适用于 c#。并且您正在 javascript 正则表达式引擎上对其进行测试。
  • 在 c# 中我使用的是正则表达式属性。
  • @pravaljain 该模式似乎在 C# 中对我来说很好用。看看我添加到答案中的演示。我的猜测是您错误地使用了他们的 API 之一。
  • 谢谢,蒂姆,但对于你的演示,我用我的替换了你的正则表达式,我的也在工作,但我不知道为什么它不能在属性上工作。我认为我使用的 API 不正确。
【解决方案2】:

拥有正确的集合验证器,它也可以在 C# 中使用 公共类 NameProp { 字符串 m_firstname;

    [Required]
    [Display(Name = "First name")]
    [MaxLength(50)]
    [RegularExpression(@"^(?![@=*-])(?!.*[<>]).*$", ErrorMessage = "firstname contains <> or start with @=*-")]
    public string firstname
    {
        get { return m_firstname; }

        set
        {
            Validator.ValidateProperty(value,
                new ValidationContext(this, null, null) { MemberName = "firstname" });
            m_firstname = value;
        }
    }

}

公开课课程 {

    static void Main(string[] args)
    {
        NameProp np = new NameProp();
        try
        {
            np.firstname = "<>JJ";
        }
        catch (ValidationException ex)
        {
            Console.WriteLine(ex.Message);
        }

    }
}
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-09-12
  • 1970-01-01
  • 1970-01-01
  • 2011-10-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多