Две вещи не так с:
if(re.test(val && val2)) {
alert("valid format");
}
if(!re.test(val && val2)) {
alert("invalid format");
}
Прежде всего, вы никогда не слышали о else
? Это специально для того, чтобы вам не пришлось повторять тест отрицательно.
Во-вторых, вы пытаетесь &&
объединить две строки и затем передать полученное логическое значение в re.test()
. Поскольку логическое значение преобразуется в строку "true"
или "false"
, оно никогда не будет совпадать.
Изменить на:
if( re.test(val) && re.test(val2)) {
alert("valid format");
}
else {
alert("invalid format");
}
Также обратите внимание, что ваше регулярное выражение неверно. Он будет принимать a..b
в качестве ввода, что явно недопустимо. Попробуйте вместо этого:
var re = /^([a-z0-9-]+\.)+[a-z]{2,3}\.$/i;
Это будет широко соответствовать большинству доменов с неограниченным количеством уровней поддоменов, при условии, что в конце будет .
.
РЕДАКТИРОВАТЬ , чтобы запретить -
в передней части секции:
var re = /^([a-z0-9][a-z0-9-]*\.)+[a-z]{2,3}\.$/i;