-1

我想允许 0-9,az,AZ 和特殊字符。, @ & ( ) {} [ ] : ; 在文本框中。

请帮我为此编写正则表达式。目前我有一个用空数据替换无字字符的代码,我想进行更改,以便它也允许上面的特殊字符。

function deleteSpecialChar(txtName, event) {

    if (txtName.value != '' && txtName.value.match(/^[\w]+$/) == null) {

        txtName.value = txtName.value.replace(/[\W]/g, '');
    };
}
$('input[type=text]').live('keypress keyup keydown cut copy paste', function (event) {

    deleteSpecialChar(this, event);
});
4

2 回答 2

2

只需将要删除的内容放在一组中:

[^0-9a-zA-Z.,@&(){}\[\]:;]+

使用该test方法,您可以使用相同的正则表达式进行检查和替换,而不是一正一负:

function deleteSpecialChar(txtName, event) {
  var re = /[^0-9,a-z,A-Z\.,@&\(\)\{\}\[\]:;]+/g;
  if (txtName.value != '' && txtName.value.test(re)) {
    txtName.value = txtName.value.replace(re, '');
  };
}
于 2012-10-01T07:42:36.040 回答
1

尝试

txtName.value = txtName.value.replace(/[^\w.,@&(){}\[\]:;]/g, '');

以 开头的字符类^是一个否定类,因此这将替换不在该类中的每个字符。

于 2012-10-01T07:45:00.983 回答