JQuery - 删除不匹配regEx的字符

时间:2011-01-09 21:49:26

标签: javascript jquery-validate

我正在尝试使用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),""));
                }
    });
  });
});

但替换功能不起作用。

1 个答案:

答案 0 :(得分:5)

在开头的方括号后立即写下^ negated character class使用{{3}}:

/[^a-zA-Z0-9!#$&%*+,-./: ;=?@_]/g

这里^具有与正则表达式中的正常含义不同的特殊含义(通常它与行的开头匹配)。

因此,您更正的代码将如下所示:

var pattern = /[^a-zA-Z0-9!#$&%*+,-./: ;=?@_]/g;
// ...
alert("New " + jVal.replace(pattern, ""));

另请注意,调用replace实际上并不会更改原始字符串 - 它会返回字符串的修改副本。如果要修改jVal的值,则需要重新分配给它:

jVal = jVal.replace(pattern, "");