我正在尝试使用jquery来验证表单。
这是用户在文本框中允许的模式。
var pattern = /^[a-zA-Z0-9!#$&%*+,-./: ;=?@_]/g;
如果用户键入除此以外的其他任何内容,则必须用“”代替。
$(document).ready(function() {
$('#iBox').blur(function() {
var jVal = $('#iBox').val();
if(jVal.match(pattern)) {
alert("Valid");
} else {
alert("New "+jVal.replace(!(pattern),""));
}
});
});
});
但是替换功能不能以这种方式工作。
最佳答案
通过在方括号后立即写一个^
来使用negated character class:
/[^a-zA-Z0-9!#$&%*+,-./: ;=?@_]/g
此处的
^
具有特殊含义,不同于正则表达式中的常规含义(通常与行的开头匹配)。因此,您更正后的代码将如下所示:
var pattern = /[^a-zA-Z0-9!#$&%*+,-./: ;=?@_]/g;
// ...
alert("New " + jVal.replace(pattern, ""));
还要注意,调用
replace
实际上并不会更改原始字符串-它会返回该字符串的修改后的副本。如果要修改jVal的值,则需要重新分配它:jVal = jVal.replace(pattern, "");