Проверка регулярного выражения

112
21 июня 2022, 02:10

Нужно построить регулярное выражение для проверки номера телефона (вроде как написал) и внести дополнения в функцию CheckData(). Тоесть по нажатию кнопки должно появится уведомление уведомление что номер телефона введен не по шаблону. Вот мои наработки, дальше застрял. Буду рад совету. Заранее спасибо!

JS:

<script type="text/javascript">
    function CheckData()
{
  var ans;
  ans = confirm("Вы уверены, что хотите отправить введенные данные ?");
  if (ans) submit();
  alert("...");
  return false;
  }
 
function isValidPhone(Phone) { 
   return /^\+?\d{1}(?:\(?\d{3}\)?|\d{3})\d{3}-?\d{2}-?\d{2}$/.test(Phone); 
} 
    </script>

HTML:

<html>
 <head>
</head>
  <body> 
    <center>
      <form action="z1_1.html" onsubmit="CheckData();return false;">
<center> <b> Для регистрации необходимо указать ваши персональные данные</b></center>
        <table>
<TR><TD>*Имя:</TD> <TD> <input type ="text" name ="Name" size ="15" onChange="this.value = this.value.toUpperCase()"><br> </TR>
<TR><TD>Организация(компания)</TD><TD> <input TYPE="text" name ="Company" size="15"><br></TD> </TR>
<TR><TD>Телефон</TD><TD> <input type ="text" name ="Phone" size="15"> <br></TD> </TR>
<TR><TD>*Адрес эл.почты</TD><TD> <input type ="text" name ="email" size="15" onChange="this.value=CheckAge(this.value)"
  onFocus="this.select()"> </TD></TR><br>
  <TD><input type="submit" size="15" value="Отправить">
  <input type="reset"></TD>
  <br>
  <TD><left>* Поля обязательные для заполнения</left></TD>
        </table>
      </center>
    </form>
  </body>
</html>
Answer 1

Немного другая регулярка. Повзволяет использовать коды +7 и прочие.

const form = document.forms[0];
const input = document.querySelector('#phone');
const rx = /^(\+{0,})(\d{0,})([(]{1}\d{1,3}[)]{0,}){0,}(\s?\d+|\+\d{2,3}\s{1}\d+|\d+){1}[\s|-]?\d+([\s|-]?\d+){1,2}(\s){0,}$/im;
const rx2 = /[^0-9+]/g;
const rx3 = /^(\+\d{1,3})?\d{10,}$/;
function testPhone(phone) {
  return rx.test(phone) && rx3.test(phone.replace(rx2,''));
}
form.addEventListener('input',()=>{
  input.className = '';
  input.classList.add( 
    testPhone(input.value) ? 'valid' : 'invalid'
  );
});
  
#phone.valid { border: 1px solid #0f0; background: #cfc; }
#phone.invalid { border: 1px solid #f00; background: #fcc; }
<form>
  <label for="phone">Введите телефон</label>
  <input type="phone" id="phone" placeholder="+99(333)333-3333"/>
</form>

Валидные форматы:

(123) 456-7890
(123)456-7890
123-456-7890
1234567890
+31636363634
+3(123) 123-12-12
+3(123)123-12-12
+3(123)1231212
+3(123) 12312123
+3(123) 123 12 12
075-63546725
+7910 120 54 54
910 120 54 54
8 999 999 99 99

Инсточник

Answer 2

Чтобы вывести предупреждение о правильности регулярного выражения можно через alert вывести следующее Допустим есть регулярка regEx И можно сделать так

alert(regEx.test(text));

text это у нас текст, которые проходит проверку через регулярку, а regEx - сама регулярка Чтобы было понятнее, напишу блок кода, который недавно использовал

var text = document.getElementById("textBox").value;
    var regEx = /^([0-9]{1,}[\.,][0-9]{1,}|[0-9]{1,})|(-[0-9]{1,}[\.,][0-9]{1,}|-[0-9]{1,})$/;
    alert(regEx.test(text));

Надеюсь поможет)

READ ALSO
В чём ошибка sql запроса?

В чём ошибка sql запроса?

Хочу из БД вытащить инфу по датам, но возвращается Warning: #1411 Incorrect datetime value

103
Деплой телеграм бота на питоне

Деплой телеграм бота на питоне

У меня есть телеграм бот написанный на питонеБот работает с базой данных

116
с++ работа regex_search

с++ работа regex_search

Есть следующий код, занимающийся поиском элементов в строкеПочему-то ф-ия regex_search выдает ошибку в заданных элементах, конкретно в string переменной...

136
Проблема с нахождением первого цифрового слова С++

Проблема с нахождением первого цифрового слова С++

Программа должна удалять каждое четное слово, дублировать каждое нечетное слово, заменять все вхождения букв 'д ' на 'т' и найти первое цифровое...

98