如何使用jQuery从字符串中删除除数字,字母和连字符之外的所有内容?
我发现这段代码只允许使用字母数字字符,但我不确定如何添加连字符。
$('#text').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;
});
答案 0 :(得分:6)
您只需将正则表达式更改为:"^[a-zA-Z0-9\-]+$"
。
请注意,使用\
转义连字符,否则用于指定a-z
范围(从a
到z
的字符)。
此代码仅检查最后输入的字符是否在允许列表中,您可能还想检查字段中的粘贴后是否仍然正确:
// The function you currently have
$('#text').keypress(function (e) {
var allowedChars = new RegExp("^[a-zA-Z0-9\-]+$");
var str = String.fromCharCode(!e.charCode ? e.which : e.charCode);
if (allowedChars.test(str)) {
return true;
}
e.preventDefault();
return false;
}).keyup(function() {
// the addition, which whill check the value after a keyup (triggered by Ctrl+V)
// We take the same regex as for allowedChars, but we add ^ after the first bracket : it means "all character BUT these"
var forbiddenChars = new RegExp("[^a-zA-Z0-9\-]", 'g');
if (forbiddenChars.test($(this).val())) {
$(this).val($(this).val().replace(forbiddenChars, ''));
}
});
答案 1 :(得分:1)
由于人们非常关注在这些答案中在字符类中包含连字符,并且由于我无法通过Google搜索轻松找到这些信息,我想我会补充说如果连字符不需要转义,如果它是类规范中的第一个字符。因此,除了其他字符外,以下字符类也可用于指定连字符:
[-a-zA-Z0-9]
答案 2 :(得分:-1)
我认为你可以在方括号内加一个连字符。
"^[a-z A-Z 0-9 -]+$"