繁体   English   中英

正则表达式的javascript验证不起作用

[英]javascript validation with regular expression not working

在我的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;
}

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

尝试以txt格式获取结果,即获取变量内替换文本的值。

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

在您的查询中,您将获得以前的值。像这样txt = txt.replace(/[\\\\\\/:*>"<>|]/g, '');正确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;
}

这不是您要的,但似乎是满足您需求的一种奇怪方法。 除非,我误解了这个问题。 由于您正在服务器上运行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。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM