如何解决正则表达式,不允许使用某些特殊字符
| 我想编写一个正则表达式,以允许字母数字值和特殊字符(此处提到的除外)\'`\',\'^ \',\'= \',\'\“ \',\'<\', \'> \',\'| \'我对此还很陌生,但并没有真正了解如何做,我正在尝试以下方法:function dbaNameCheck(input,regex)
{
if (regex && input.value.length > 0)
{
if(regex.match(/dbaNameCheck/i) && input.value.match(/[0-9A-Za-z]|[\\`\\^\\=\\\"\\<\\>\\|]*/g))
{
input.value = input.value.replace(/[\\`\\^\\=\\\"\\<\\>\\|]*/g,\'\');
input.focus();
}
}
}
我在按键事件中这样调用此函数:
onkeypress=\"dbaNameCheck(this,\'dbaNameCheck\');\"
但是它没有按预期工作。我的文本框中的值可以是字母数字,也可以是除上面提到的字符以外的任何特殊字符。有人可以帮我弄这个吗?
解决方法
像这样重写您的函数:
function dbaNameCheck(input)
{
var re = /[`\\^=\"<>|]+/g;
if (input.value.length > 0 && re.test(input.value))
{
input.value = input.value.replace(re,\'\');
input.focus();
}
}
然后以这种方式调用它:
onkeyup=\"dbaNameCheck(this);\"
onKeyup是您要捕获的事件,而不是onKeypress。
, /[^`^=\"<>|]/
应该匹配所有字符,除了那些字符。第一个^表示\“除以下字符外的任何字符\”。
但是如果您要用空字符串替换它们,则可能不希望先使用^
。
\'|||abc<==<<<\'.replace(/[<>|]/g,\'\')
给出\“ abc === \”
, 仅供参考,这是另一种(古老的)方法,无需使用正则表达式即可实现您想做的事情。但是,如果不能处理复制和粘贴。
首先声明你的功能像
function killKeys(e)
{
switch(e.charCode)
{
case 60: // \"<\"
case 61: // \"=\"
case 62: // \">\"
case 94: // \"^\"
case 96: // \"`\"
return false;
break;
default:
return true;
}
}
然后这样称呼它
onkeypress=\"return killKeys(event);
, <script language=\"javascript\" type=\"text/javascript\">
function isNumberKey(evt) {
var charCode = (evt.which) ? evt.which : event.keyCode;
if (charCode != 46 && charCode > 31 && (charCode < 97 || charCode > 122) && (charCode < 65 || charCode > 96) && (charCode < 48 || charCode > 57) || charCode == 110 || charCode == 190)
return false;
return true;
}
</script>
<asp:TextBox ID=\"txtCompany\" runat=\"server\" onkeypress=\"return isNumberKey(event)\" ></asp:TextBox>
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。