Хорошо, так что я вроде новичок в регулярных выражениях в общем, не говоря уже о Javascript.
Я пытаюсь работать над проектом проверки формы, и я нашел сайт, где у них есть список полезных примеров регулярных выражений для различных вещей здесь , где есть несколько для проверки электронной почты, что я и пытаюсь сделать момент
В любом случае, следуя этому примеру для проверки формы в w3schools, я смог заставить его работать правильно, используя их пример, и регулярное выражение работает за пределами функции javascript, но по какой-то причине, когда я вызываю его внутри функции, он возвращает значение undefined.
Вот мой код:
<html>
<head>
<title>formzz validate-jons</title>
<script type="text/javascript">
pattern = new RegExp("^[0-9a-zA-Z]+@[0-9a-zA-z]+[\.]{1}[0-9a-zA-Z]+[\.]?[0-9a-zA-Z]+$");
function valid8email(field, txt)
{
with(field)
{
//at_pos = value.indexOf('@');
//dot_pos = value.lastIndexOf('.');
if(!pattern.test(value)) //at_pos < 1 || (dot_pos - at_pos) < 2)
{
alert(txt);
return false;
}
else
{
return true;
}
}
}
function valid8(form)
{
with(form)
{
if(valid8email(email, "you must enter an email address") == false)
{
email.focus();
return false;
}
}
}
</script>
</head>
<body>
<form action="#" method="POST" onsubmit="return valid8(this)">
Email: <input type="text" name="email" size="30" />
<input type="submit" value="clicky-click" />
</form>
<script type="text/javascript">
alert(pattern.test(""));
</script>
</body>
</html>
Хорошо ... значит, предупреждение в тегах скрипта внутри тела работает просто отлично.
Я провел множество тестов внутри самой функции javascript и проверил различные вещи:
- типом 'значения' является Строка
- функция возвращает undefined при вызове внутри javascript
- само регулярное выражение работает нормально, так как оно вернет true, когда правильное форматирование введено в теги скрипта ниже
Так в чем же может быть проблема? Я в замешательстве.