3

我很难弄清楚 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 一起使用。有人可以帮我解决这个问题吗?

4

3 回答 3

4

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

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

于 2012-10-17T10:02:42.533 回答
3

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

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

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

new RegExp(validationExpressionGoesHere);
于 2012-10-17T10:00:59.450 回答
2

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

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

            $(control).attr("class", "invalid");
        } 
        else if(val.match(/[^#%&*:<>?/{|}]+/)) {
            // Valid
        }
        else {
            // Invalid
        }
    }
于 2012-10-17T10:03:02.597 回答