我正在尝试创建一个函数,以基于一组字符检查字段是否有效 ,如果不是,则输出不允许输入的字符。不知道这是否是最好的方法,但我基本上不是告诉用户可以使用哪些方法,而是要告诉他不能使用的方法。
function allowedString(field){
var validCharacters = new RegExp('^[a-zA-Z0-9áéíóúÁÉÍÓÚñÑ_-¿?¡!.,;:$() ]*$');
if(!validCharacters.test(field.val())){
var invalid = ?;
return "Invalid characters: "+invalid;
}
}
答案 0 :(得分:0)
您可以拆分字符串并像处理数组一样对其进行处理(尽管不确定性能)。
function allowedString(field){
const validCharacters = new RegExp('^[a-zA-Z0-9áéíóúÁÉÍÓÚñÑ_-¿?¡!.,;:$() ]*$');
const disallowed = field.val().split('').filter(x => !validCharacters.test(x));
if (disallowed.length) {
return disallowed.join('');
}
}
答案 1 :(得分:0)
使用正则表达式中的字符集,可以从字符串中删除所有这些字符,结果将是不允许的字符。试试这个JS代码,
function allowedString(s){
var validCharacters = new RegExp('^[a-zA-Z0-9áéíóúÁÉÍÓÚñÑ_-¿?¡!.,;:$() ]*$');
if(!validCharacters.test(s)){
var invalid = s.replace(/[a-zA-Z0-9áéíóúÁÉÍÓÚñÑ_-¿?¡!.,;:$() ]*/g,'');
return "Invalid characters: "+invalid;
} else {
return "All characters are valid"; // return any message you want
}
}
console.log(allowedString('aa@@bb##'));
console.log(allowedString('abc'));
console.log(allowedString('aa@@bb##~~^^'));
然后将函数中的field
参数更改回原始代码。
答案 2 :(得分:0)
我撤消了测试:字符串中是否有无效字符?
请注意,除第一个和最后一个位置外,您必须在字符类中转义短划线。
function allowedString(field){
var invalidCharacters =/([^a-zA-Z0-9áéíóúÁÉÍÓÚñÑ_\-¿?¡!.,;:$() ])/;
invalid = invalidCharacters.exec(field);
if (invalid != null) {
return "Invalid characters: "+invalid[1];
} else {
return "OK";
}
}
console.log(allowedString('abc'));
console.log(allowedString('abc@def'));
console.log(allowedString('abc§def'));