我看到很多帖子接近我正在寻找的内容,但我仍然遇到错误并且希望得到一些正则表达式的帮助。我有一个表单字段,需要允许字母数字,空格和短划线。理想情况下,空格和破折号不会是连续的。
我希望在keyup上触发,以便用户无法选择键入这些禁用字符。
这是我到目前为止所做的,但是我正在抛出错误的转义错误,而且这些代码在firefox中不起作用。谢谢你的帮助!
$('#your_name').keypress(function (e) {
var allowedChars = new RegExp("^[a-zA-Z0-9\-\ ]+$");
var str = String.fromCharCode(!e.charCode ? e.which : e.charCode);
if (allowedChars.test(str)) {
return true;
}
e.preventDefault();
return false;
}).keyup(function() {
var forbiddenChars = new RegExp("[^a-zA-Z0-9\-\ ]", 'g');
if (forbiddenChars.test($(this).val())) {
$(this).val($(this).val().replace(forbiddenChars, ''));
}
});
答案 0 :(得分:1)
试试这个:
$('#your_name').keyup(function (e) {
var allowedChars = /^[a-z\d -]+$/i;
var str = String.fromCharCode(e.charCode || e.which);
var forbiddenChars = /[^a-z\d -]/gi;
if (forbiddenChars.test(this.value)) {
this.value = this.value.replace(forbiddenChars, '');
}
if (allowedChars.test(str)) {
return true;
}
e.preventDefault();
return false;
});