javascript验证与正则表达式无法正常工作

时间:2015-12-17 07:34:34

标签: javascript asp.net regex

在我的asp.net Web应用程序中。我需要验证一个文本框条目以避免这些特殊字符\/:*>"<>|。我计划用空字符串替换该字符,并为此编写了一个javascript函数并添加了该属性以从服务器端调用该函数,如下所示

txtProjectName.Attributes.Add("onkeyup", "ValiateSpecialCharacter()");

从此开始,每件事都很好,并调用该函数。同时输入任何字符。功能是

function ValiateSpecialCharacter(){
    var txt=document.getElementById("<%=txtProjectName.ClientID%>").value;
    txt.replace(/[\\\/:*>"<>|]/g, '');
    alert(txt);
    document.getElementById("<%=txtProjectName.ClientID%>").value=txt;
}

我在函数中使用正则表达式来执行此操作。但测试没有按计划更换。此代码中是否有任何错误。另请注意,警报正在运行。

3 个答案:

答案 0 :(得分:1)

尝试在txt中获取结果,即获取变量中替换文本的值。

txt = txt.replace(/[\\\/:*>"<>|]/g, '');

答案 1 :(得分:1)

在您的查询中,您获得了之前的值。像txt = txt.replace(/[\\\/:*>"<>|]/g, '');一样正确分配。它会在alert框中显示最新结果。

function ValiateSpecialCharacter(){
var txt=document.getElementById("<%=txtProjectName.ClientID%>").value;
txt = txt.replace(/[\\\/:*>"<>|]/g, '');
alert(txt);
document.getElementById("<%=txtProjectName.ClientID%>").value=txt;
}

答案 2 :(得分:0)

这不是你问的,但似乎是一种奇怪的方式来满足你的需求。除非,我误解了这个问题。由于您在服务器上运行ASP.NET,为什么要使用JavaScript进行服务器验证? 验证客户端上的输入通常是有意义的。为此,您需要挂钩一个类似表单提交的事件来调用javascript函数。

如果要在服务器上进行验证,请在函数处理表单中使用类似的内容:

Regex re = new Regex("^[a-zA-Z0-9][a-zA-Z0-9-]{1,61}[a-zA-Z0-9](?:\\.[a-zA-Z]{1,})+$");
if (!re.IsMatch (domain.Text)) {
    warningLabel.Text = "Domain format is invalid!";
    formError = true;
}

显然,您没有验证域名,因此请更改正则表达式等。服务器端验证不需要JavaScript。