我需要做的就是检查输入是否包含给定数组的任何值。由于某种原因它总是返回 true;
document.querySelector('#phonenumber').addEventListener('change', function (e) {
let alphabet = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'.split('');
let target = e.target.value;
let splittedTarget = target.split('');
console.log(splittedTarget, alphabet)
if (alphabet.indexOf(splittedTarget) > -1) {
alert('there is not');
} else {
alert('there is');
}
});
fiddle 链接:https://jsfiddle.net/et5avosu/
最佳答案
您可以使用.some()
在您输入的字符上:
const alphaInInput = !splittedTarget.some(elem => alphabet.indexOf(elem) > -1);
alphaInInput
将是 boolean
。如果您的输入包含 alphabet
中的字符字符串那么它将是 true
,如果没有则为 false
.
请参阅下面的工作示例:
document.querySelector('#phonenumber').addEventListener('change', function (e) {
let alphabet = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'; // Remove .split() (no need for array)
let target = e.target.value;
let splittedTarget = target.split('');
const alphaInInput = splittedTarget.some(elem => alphabet.indexOf(elem) > -1);
// console.log(splittedTarget, alphabet)
if (!alphaInInput) {
alert('there is not');
} else {
alert('there is');
}
});
<input id="phonenumber" />
或者您可以使用 regex
使用以下模式 /[A-Za-z]/g
,然后使用.test()
查看您的输入是否与模式匹配。
注意:/[A-Za-z]/g
测试从 A 到 Z 和 a 到 z 的字符,即您的字母字符串包含的内容:
document.querySelector('#phonenumber').addEventListener('change', function (e) {
let inputStr = e.target.value;
let regex = /[A-Za-z]/g;
let alphaInInput = regex.test(inputStr);
if (!alphaInInput) {
alert('there is not');
} else {
alert('there is');
}
});
<input id="phonenumber" />
关于javascript - JS 电话号码验证-匹配字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53498241/