我基本上在我的页面上进行了以下验证 - 它是一个单词规则,因为文本框中的描述不能超过3个单词,不包括单词'和'。我在C#中实现了以下服务器端验证,工作正常
if (Desc.Trim().ToString() != "")
{
MatchCollection collection = Regex.Matches(Desc.Replace("and", ""), @"[\S]+");
if (collection.Count > 3)
{
ErrorMsg.Append("Description should contain at most 3 words(excluding 'and').");
ErrorMsg.Append("\\n");
}
}
但是我在Javascript中遇到同样困难。我已经尝试了以下但是它到目前为止还没有工作,所以希望有更好的Javascript知识的人可以看到错误。注意if是在页面上触发的更大验证函数的一部分 - 警报只是在那里看它是否进入这个if(它没有) - 当这个块被删除时,页面上的其余JS是工作正常。
if (Desc.val().trim() != "")
{
alert('1');
!regexWordRule.test(Desc.val());
alert('2');
if (Desc.val().match(regexWordRule).length > 3)
{
errorText += "Description should contain at most 3 words(excluding 'and').";
}
valid = false;
}
以下是我在js文件最顶部定义的regexWordRule。
var regexWordRule = /[\S]+/;
答案 0 :(得分:2)
你可以找到一个更好的解决方案,但我想到了这种方法,所以我发布了它:
var input = "and lorem and ipsum";
// remove ands
var deandizedinput = input.replace(/\band\b/g, ' ');
// replace all white spaces with a single space
var normalizedinput = deandizedinput.replace(/\s+/g, ' ');
// split the input and count words
var wordcount = normalizedinput.trim().split(' ').length;
小提琴here。
答案 1 :(得分:1)
如果您使用的是MVC3,则可以在模型(RemoteAttribute)上使用远程验证。 或者你可以使用ajax请求手动进行这种验证。
这样可以防止代码重复。