使用js和正则表达式检查文本框中的无效字符

时间:2012-10-17 09:52:22

标签: javascript html regex

我很难弄清楚RegExp是如何工作的。

我需要将一些ASP代码重写为html和js,我在这部分遇到了障碍:

<asp:RegularExpressionValidator runat="server" id="RegExpValidator" controltovalidate="FileName" Display="Dynamic" ValidationExpression="[^#%&*:<>?/{|}]+">

现在,我要做的是创建一个输入文本框,只要内容发生变化,它就会运行js函数。

<input type="text" id="fileNameTextBox" class="ms-input" size="35" maxlength="123" onchange="regexValidator(this);"/>

function regexValidator(control) {
            var val = $(control).val();
            if(val == undefined || val == '') {

                $(control).attr("class", "invalid");
            } 
            else { 
            // Regex stuff goes in here
            }
        }

现在,对于我的生活,我无法弄清楚如何构建正则表达式。 ValidationExpression字段我假设检查无效字符,虽然它似乎不是一个正确构造的正则表达式,我无法弄清楚如何将它写入适当的一个用于js。有人可以帮我解决这个问题吗?

3 个答案:

答案 0 :(得分:4)

如果您希望正则表达式检查字段中的无效字符,则可以使用此字符。

^.*?(?=[\^#%&$\*:<>\?/\{\|\}]).*$如果至少有一个无效字符,这将给你一个匹配。

答案 1 :(得分:2)

你快到了。现在您只需要确保您的字符串包含有效字符。通过为字符串的开头和结尾添加锚点来做到这一点,从而确保重复的序列覆盖整个字符串:

ValidationExpression="^[^#%&*:<>?/{|}]+$"

编辑:我刚才意识到您可能还想知道如何从字符串创建正则表达式。您只需将字符串传递给正则表达式构造函数:

new RegExp(validationExpressionGoesHere);

答案 2 :(得分:2)

[^#%&*:<>?/{|}]+看起来像是一个有效的表达式(尽管通常正则表达式包含在正斜杠中)。它基本上检查文件名是否包含方括号内的任何非法字符(除了表示否定的插入符^之外)。

function regexValidator(control) {
        var val = $(control).val();
        if(val == undefined || val == '') {

            $(control).attr("class", "invalid");
        } 
        else if(val.match(/[^#%&*:<>?/{|}]+/)) {
            // Valid
        }
        else {
            // Invalid
        }
    }
相关问题