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