如何限制要输入的文本框中的任何特定字符。我只想限制 ^ 和 %
Posted
技术标签:
【中文标题】如何限制要输入的文本框中的任何特定字符。我只想限制 ^ 和 %【英文标题】:How to restrict any specific characters in textbox to be entered. I want to restrict only ^ and % 【发布时间】:2018-11-15 03:16:59 【问题描述】:我尝试了以下方式,但它限制了所有特殊字符。不确定如何仅限制特定字符。
$(function()
$('#test').keypress(function (e)
var regex = new RegExp("^[a-zA-Z0-9-]+$");
var str = String.fromCharCode(!e.charCode ? e.which : e.charCode);
if (regex.test(str))
return true;
e.preventDefault();
return false;
);
);
<input type="text" id="test"/>
【问题讨论】:
你是说你愿意还是不愿意允许^
和%
?
【参考方案1】:
你只需要转义你的字符
var regex = new RegExp("[^\\^\\%]");
小提琴 ==> http://jsfiddle.net/6j8sa9qz/10/
如果您只想允许字符,只需删除第一个 ^
此外,由于正则表达式不是动态的,您可以在 keypress 函数之外声明它。否则,每次用户按键时都会一次又一次地声明它!
而且实际上你不需要返回true
,所以你可以简化
$(function()
var regex = new RegExp("[^\\^\\%]");
$('#test').keypress(function (e)
var str = String.fromCharCode(!e.charCode ? e.which : e.charCode);
if (!regex.test(str))
e.preventDefault();
return false;
);
);
【讨论】:
【参考方案2】:您可以简单地测试 char 是否与 either % or ^
的正则表达式不匹配:
正则表达式是:
/%|\^/
这是你的代码:
$(function()
$('#test').keypress(function(e)
var str = String.fromCharCode(!e.charCode ? e.which : e.charCode);
return !(/%|\^/.test(str))
);
);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="text" id="test" />
【讨论】:
从技术上讲,这可以减少到return !(/%|\^/.test(str))
,因为返回 false 会有效地防止默认等等。
其实群[%\^]
比%|\^
快
工作。谢谢@Luca
@Sampgun 我发现它们的比例为 2-4%【参考方案3】:
试试这个代码
下面将分配除 ^ 和 % 之外的所有大小写字母、数字和特殊字符
[a-zA-Z_0-9@\!#\$\&*()+=\-[]\\\';,\.\/\\\|\":<>\? ]
【讨论】:
以上是关于如何限制要输入的文本框中的任何特定字符。我只想限制 ^ 和 %的主要内容,如果未能解决你的问题,请参考以下文章