Javascript 如何返回错误字符?
我使用JavaScript检查字符串是否包含无效字符;允许的字符有Javascript 如何返回错误字符?,javascript,jquery,Javascript,Jquery,我使用JavaScript检查字符串是否包含无效字符;允许的字符有a-z、a-z、0-9和-: var str = 'Some string!', invalid_characters = []; if (/^[a-zA-Z0-9-]*$/.test(str) == false) { console.log('Invalid characters: ' + invalid_characters.join(', ')); } else { console.log('String
a-z
、a-z
、0-9
和-
:
var str = 'Some string!',
invalid_characters = [];
if (/^[a-zA-Z0-9-]*$/.test(str) == false) {
console.log('Invalid characters: ' + invalid_characters.join(', '));
}
else {
console.log('String is OK.');
}
在上面的例子中,
和代码>不正确。如何将这些字符放入数组无效\u字符
(每个字符只有一次,没有重复)?谢谢。也许不是最好、最简单的解决方案,但它应该有效:)
characters=str.split(“”);
错误=[];
characters.forEach(函数(字符){
//检查是否有错误
如果(/^[a-zA-Z0-9-]*$/。测试(字符)==false){
//检查是否重复
if(error.indexOf(character)可能不是最好、最简单的解决方案,但它应该可以工作:)
characters=str.split(“”);
错误=[];
characters.forEach(函数(字符){
//检查是否有错误
如果(/^[a-zA-Z0-9-]*$/。测试(字符)==false){
//检查是否重复
if(error.indexOf(character)过滤掉不符合您的模式的字符
var str='Some string!!!';
var invalid_characters=str.split(“”).filter(函数(字符){
返回!/[a-zA-Z0-9-]/.测试(字符)
})
//筛选出重复项
无效字符=无效字符。过滤器(函数(字符,位置){
返回无效的字符。indexOf(char)==pos;
})
console.log(无效字符)/[“”,“!”]
筛选出不符合您的模式的字符
var str='Some string!!!';
var invalid_characters=str.split(“”).filter(函数(字符){
返回!/[a-zA-Z0-9-]/.测试(字符)
})
//筛选出重复项
无效字符=无效字符。过滤器(函数(字符,位置){
返回无效的字符。indexOf(char)==pos;
})
console.log(无效的_字符)/[“”,“!”]
以下内容可以为您完成大部分工作
var str='Some!string;
变量匹配=str.match(/[^a-zA-Z0-9-]{1}/g);
如果(匹配){
var invalid_characters=matches.filter(函数(char,pos){
返回匹配项。indexOf(char)==pos;
});
log('无效字符:“'+无效字符+”);
}否则{
log('字符串正常');
}
以下内容应该可以为您完成大部分工作
var str='Some!string;
变量匹配=str.match(/[^a-zA-Z0-9-]{1}/g);
如果(匹配){
var invalid_characters=matches.filter(函数(char,pos){
返回匹配项。indexOf(char)==pos;
});
log('无效字符:“'+无效字符+”);
}否则{
log('字符串正常');
}
str.split-and-loop-troughtstr.split-and-loop-troughts这将不会只返回每个错误字符一次而没有重复的谢谢,这也是解决方案。@Legionar:no-worriesThanks,以及如何删除重复的字符?谢谢var str='Some string!!';
它将返回[“”,“!”,“!”]
@Legionar use array.indexOf(word)@Jonasw是的,但是在filter
函数中它将不起作用。哦,是的,对不起,我跳过了这部分。我添加了一个dupes filterThanks,以及如何删除重复项?对于var str='Some string!!';
它将返回[“”,“!”,“!”]
@Legionar use array.indexOf(word)@Jonasw是的,但是在过滤器
函数中它将不起作用。哦,是的,对不起,我跳过了这部分。我添加了一个重复过滤器谢谢,这也是解决方案。谢谢,这也是解决方案。
characters=str.split("");
wrong=[];
characters.forEach(function(character){
//check if wrong
if(/^[a-zA-Z0-9-]*$/.test(character) === false){
//check if duplicate
if(wrong.indexOf(character)<0){
wrong.push(character);
}
}
});