我尝试了以下方式,但它限制了所有特殊字符。不知道我怎么能只限制特定字符。
$(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"/>
答案 0 :(得分:1)
你只需要逃避你的角色
var regex = new RegExp("[^\\^\\%]");
小提琴==&gt; 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;
}
});
});
答案 1 :(得分:1)
您可以简单地测试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" />
答案 2 :(得分:0)
试试此代码
下面将分享所有Case Case,Numbers&amp;除^和%
之外的特殊字符[a-zA-Z_0-9@\!#\$\&*()+=\-[]\\\';,\.\/\{\}\|\":<>\? ]