我有一个示例代码,用于检查输入中的哪些用户类型在javascript数组中可用。
var postcodes = ["00-240", "80", "32", "90", "91"];
$('#test').keyup(function () {
var val = this.value;
var m = $.map(postcodes, function (value, index) {
var reg = new RegExp('^' + val + '.*$');
return value.match(reg);
});
$('#msg').text(m.length && val.length ? 'VALID' : 'INVALID');
});
我想在用户输入时设置VALID:80-215,80-512,32-125等。 现在,如果我输入80或32,它的显示有效,但是当我写80-215或32-111时,它将显示无效。 我想检查数组中的某些字符串是否在字符串中可用,这是来自用户的请求(强调字母的顺序)。
我会感激任何提示。
此致
答案 0 :(得分:0)
你有一些问题:
Array.prototype.some
而不是Array.prototype.map
input
事件,而不是keyup
一个。var postCodes = ["00-240", "80", "32", "90", "91"],
postRegExp = postCodes.map(function(code) {
return new RegExp('^' + code.replace(/[.^$*+?()[{\\|]/g, '\\$&'));
});
document.getElementById('test').oninput = function () {
var val = this.value,
m = postRegExp.some(function(regExp){
return regExp.test(val);
});
document.getElementById('msg').innerHTML = m ? 'VALID' : 'INVALID';
};
但是,您可以尝试ES6 String.prototype.startsWith
:
var postCodes = ["00-240", "80", "32", "90", "91"];
document.getElementById('test').oninput = function () {
var val = this.value,
m = postCodes.some(code => val.startsWith(code));
document.getElementById('msg').innerHTML = m ? 'VALID' : 'INVALID';
};