【问题标题】:Regular Expressions not Working in jQuery Validation正则表达式在 jQuery 验证中不起作用
【发布时间】:2014-01-05 17:34:25
【问题描述】:

我很难让正则表达式与 jQuery Validation 一起使用。假设我采用一个简单的正则表达式,它至少需要 8 个字符才能匹配:

(?=.{8,})

如果将其插入JavaScript-based regular expression tester,它就可以正常工作。 8 个或更多字符匹配,7 个或更少不匹配。

此外,如果我在 C# 中测试它也可以:

        var regex = new Regex(@"(?=.{8,})");
        if (regex.IsMatch(myInput))
        {
            // Hits this code when myInput >= 8 characters
        }

接下来,我在视图模型中使用 ValidationAttribute 来发出 jQuery Validation 以确保用户的输入与表达式匹配:

    [RegularExpression(@"(?=.{8,})", ErrorMessage="Does not match.")]
    public string MyInput { get; set; }

此时,它崩溃了。无论我在字段中键入什么都不匹配。发出的 HTML 如下:

    <input data-val="true" data-val-regex="Does not match." 
            data-val-regex-pattern="(?=.{8,})"  id="MyInput" name="MyInput"
            type="text" value="" />

我尝试了不同的正则表达式,但无济于事。我忽略了 jQuery Validation 中的正则表达式有什么不同吗?

【问题讨论】:

    标签: c# javascript jquery regex validation


    【解决方案1】:

    也许这行得通:

    RegularExpression(@"^.{8,}$")
    

    希望这会有所帮助。干杯

    【讨论】:

    • 有趣。此正则表达式在网页上有效,但在服务器代码中失败。基本上与我原来的问题相反。就好像我需要将输入与两个不同的正则表达式匹配,一个在浏览器中,另一个在服务器上进行验证。奇怪。
    • 嗯,奇怪。 RegularExpression(@".{8,}") 呢?
    • 我刚刚在 C# 上进行了测试,并且答案中的正则表达式有效。你不是在别处犯错了吗?
    • 你说得对,我在测试时出错了。这应该可行,尽管我不完全清楚为什么原始表达式除了在 jQuery Validation 之外的任何地方都有效。我的理解是 ?= 构造表示向前看,而 .{8,} 检查 8 到任意数量的字符。也许正则表达式的 jQuery/JavaScript 实现与 .NET 不一致。感谢您的帮助!
    • 欢迎。是的,实现上有一些变化。您能否将答案标记为已接受?
    猜你喜欢
    • 2014-08-23
    • 1970-01-01
    • 2021-06-18
    • 2018-11-29
    • 2014-04-21
    • 1970-01-01
    • 2016-08-01
    • 2011-03-01
    • 1970-01-01
    相关资源
    最近更新 更多