2012-10-01 26 views
-1

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

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

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); 
}); 
+0

不要使用'live',请使用'on'。 'live'已经在前段时间被弃用 –

+0

我发现它有助于使用像regexpal或其替代方法之一,这种方式可以测试您的表达式与可能的输入之间的关系,并且这可以快速暴露任何意外结果,并帮助您学习如何构建表达式。 – codepuppy

回答

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, ''); 
    }; 
} 
+1

char类可以简化为:'[^ 0-9a-zA-Z。,@ &(){}:; \ [\]]',无需为了简化代码而跳过所有这些东西 – NullUserException

+0

+1,一句话。 '0-9,a-z,A-Z'之间的逗号是不需要的。 – stema

+0

@NullUserException:对,我只是逃脱了我不确定的一切。 – Guffa

1

尝试

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

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

+0

'\ w'尽管包含下划线 – NullUserException

相关问题