Javascript 不允许使用某些特殊字符的正则表达式
我想写一个正则表达式来允许字母数字值和特殊字符,除了这里提到的“``、“^”、“=”、“`、”、“''.'”,我对这个很陌生,并没有真正了解如何做。我正在尝试下面的方法:Javascript 不允许使用某些特殊字符的正则表达式,javascript,regex,Javascript,Regex,我想写一个正则表达式来允许字母数字值和特殊字符,除了这里提到的“``、“^”、“=”、“`、”、“''.'”,我对这个很陌生,并没有真正了解如何做。我正在尝试下面的方法: function dbaNameCheck(input, regex) { if (regex && input.value.length > 0) { if(regex.match(/dbaNameCheck/i) && input.value.match(/[0-9
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();
}
}
}
但它没有按预期工作。我的文本框中的值可以是字母数字和除上述字符外的任何特殊字符。有人能帮我吗?/[^`^=“|]/
应该匹配除这些字符以外的所有字符。第一个“^”表示“除以下字符外的任何字符”
但是,如果要用空字符串替换这些字符串,您可能不希望首先使用
^
'|||abc<==<<<'.replace(/[<>|]/g, '')
“| | | abc如下重写函数:
function dbaNameCheck(input)
{
var re = /[`\^="<>|]+/g;
if (input.value.length > 0 && re.test(input.value))
{
input.value = input.value.replace(re, '');
input.focus();
}
}
onKeyup是您想要捕捉的事件,而不是onKeypress。仅供参考,这里有另一种(老式)方法来实现您想要做的事情,无需使用正则表达式。但是,如果无法处理复制和粘贴
首先声明您的函数,如
function killKeys(e)
{
switch(e.charCode)
{
case 60: // "<"
case 61: // "="
case 62: // ">"
case 94: // "^"
case 96: // "`"
return false;
break;
default:
return true;
}
}
函数isNumberKey(evt){
var charCode=(evt.which)?evt.which:event.keyCode;
如果(charCode!=46&&charCode>31&&charCode<97 | | charCode>122)&&charCode<65 | | charCode>96)&&charCode<48 | | charCode>57)| charCode==110 | | charCode==190)
返回false;
返回true;
}
感谢您添加关于^,+1的小评论,感谢您今天教了我一些东西。非常感谢您的回答jcomeau_ictx。然而,我实际上尝试了如下所示:Hi shinkou,谢谢你的回答,但它不允许我在文本框中输入多个字符。实际上,jcomeau_ictx给出的解决方案是有效的,只是它无法检测到禁止字符的首次出现。例如:如果我写“asd>”,那么我想要的是文本应该被重新格式化为“asd”,但这不会发生。但是,如果我尝试在“asd>”之后输入“>”,则会被阻止。我也希望在第一次出现时有相同的行为。@Debojyoti,我已经检查过它在Firefox和Chrome上是否有效。你用的是什么浏览器?实际上,新口,你是对的。我忘了使用onkeyup,而且我相信您对正则表达式做了一些修改。不过,我欠你一顿,非常感谢。@Debojyoti,我正在测试我给你的示例代码,发现它不起作用,所以我编辑了它。(^^;虽然我更喜欢使用正则表达式,但我必须感谢您分享这个替代解决方案:-)除了代码之外,您可以添加一些文本来解释答案吗?
onkeyup="dbaNameCheck(this);"
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>