C# 正则表达式在jQuery验证中不起作用
我很难让正则表达式使用jQuery验证。假设我使用一个简单的正则表达式,它至少需要8个字符才能匹配:C# 正则表达式在jQuery验证中不起作用,c#,javascript,jquery,regex,validation,C#,Javascript,Jquery,Regex,Validation,我很难让正则表达式使用jQuery验证。假设我使用一个简单的正则表达式,它至少需要8个字符才能匹配: (?=.{8,}) 如果把这个插进电源,它就可以正常工作。8个或更多字符匹配,7个或更少字符不匹配 此外,如果我在C#中测试这一点,它也可以工作: var regex = new Regex(@"(?=.{8,})"); if (regex.IsMatch(myInput)) { // Hits this code whe
(?=.{8,})
如果把这个插进电源,它就可以正常工作。8个或更多字符匹配,7个或更少字符不匹配
此外,如果我在C#中测试这一点,它也可以工作:
var regex = new Regex(@"(?=.{8,})");
if (regex.IsMatch(myInput))
{
// Hits this code when myInput >= 8 characters
}
接下来,我在视图模型中使用ValidationAttribute来发出jQuery验证,以确保用户的输入与表达式匹配:
[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验证中的正则表达式是否有我忽略的一些不同之处?也许这样可以:
RegularExpression(@"^.{8,}$")
希望这有帮助。干杯很有趣。此正则表达式在网页上工作,但在服务器代码中失败。基本上与我原来的问题相反。好像我需要将输入匹配到两个不同的正则表达式,一个在浏览器中,另一个在服务器上验证。奇怪,嗯,奇怪。那正则表达式(@“{8,}”)呢?我刚刚在C#上测试过,答案中的正则表达式是有效的。你不是在别的地方犯了错误吗?你是对的,我在测试这个时犯了一个错误。这应该是可行的,尽管我不完全清楚为什么原始表达式在除了jQuery验证之外的任何地方都可以工作。我的理解是?=构造表示向前看,而{8,}检查8到任意数量的字符。也许正则表达式的jQuery/JavaScript实现与.NET不一致。谢谢你的帮助!欢迎是的,在实现上有一些变化。你能把答案标为已接受吗?