JS phone 数字验证-匹配字符串
JS phone number validation - matching strings
我需要做的就是检查输入是否包含给定数组的任何值。出于某种原因,它 returns 总是正确的;
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 link: https://jsfiddle.net/et5avosu/
Array<String>.indexOf(Array)
始终是 -1
,因为 String
的列表不包含 Array
。您需要使用其他方法来验证输入。
您可以在输入字符上使用 .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" />
改用这个,我测试过并且有效
document.querySelector('#phonenumber').addEventListener('change', function (e) {
let alphabet = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'.split('');
let target = e.target.value;
let splittedTarget = target.split('');
if(splittedTarget.every(r => alphabet.indexOf(r) < 0)){
alert('only numbers');
} else {
alert('there is letter');
}
});
我需要做的就是检查输入是否包含给定数组的任何值。出于某种原因,它 returns 总是正确的;
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 link: https://jsfiddle.net/et5avosu/
Array<String>.indexOf(Array)
始终是 -1
,因为 String
的列表不包含 Array
。您需要使用其他方法来验证输入。
您可以在输入字符上使用 .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" />
改用这个,我测试过并且有效
document.querySelector('#phonenumber').addEventListener('change', function (e) {
let alphabet = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'.split('');
let target = e.target.value;
let splittedTarget = target.split('');
if(splittedTarget.every(r => alphabet.indexOf(r) < 0)){
alert('only numbers');
} else {
alert('there is letter');
}
});