Регулярное выражение для десятизначного числа

Моя программа здесь пытается ввести пользовательский ввод в текстовое поле, и если пользовательский ввод представляет собой 10-значное число (числа с 0 в начале или любой такой счет), когда они нажимают кнопку проверки, они получат оповещение о том, какой у них номер, иначе они получат предупреждение о том, что им нужно ввести правильный номер.

Однако всякий раз, когда я нажимаю кнопку, ничего не меняется. Я считаю, что в моем регулярном выражении и функции есть проблема, но я не уверен, как написать регулярное выражение, которое ищет определенный шаблон, где в результате формы есть 10 цифр.

Вот соответствующие биты моего кода.

<form name = submitnumber">
  <input type = "text" size = "15" name = "inputnumber"></input>
  <button type = "button    " onclick = "checknumber()">Check</button>
</form>
<script type "text/javascript">
  function checknumber() {
    var tendigitnum = /^\d+${10}/; 
    var input_num = document.getElementByName("inputnumber")
    if (input_num.search(tendigitnum)) {
      window.alert("You entered: " + input_num);
    } else {
      window.alert("Please enter a valid 10 digit number!");
    }
  }
</script>

person A B    schedule 08.06.2016    source источник
comment
Откройте консоль браузера (обычно F12) — ваше регулярное выражение недопустимо и должно регистрироваться ошибка (первая из нескольких).   -  person James Thorpe    schedule 08.06.2016
comment
В вашем коде есть несколько проблем, любая из которых приведет к сбою.   -  person    schedule 08.06.2016


Ответы (2)


Синтаксис вашего регулярного выражения неверен.

Сделай это

var tendigitnum = /^\d{10}$/; 

и использовать его как

tendigitnum.test("2342343434"); //outputs true

Кроме того, нет такого метода, как getElementByName, вам нужно использовать getElementsByName и возвращает несколько элементов. Сделай это

var input_num = document.getElementsByName("inputnumber")[0].value;
person gurvinder372    schedule 08.06.2016
comment
также, когда я нажимаю кнопку проверки, ввод просто исчезает, и предупреждение не отображается. - person A B; 08.06.2016
comment
Да, у меня есть, и когда я переключаю порядок оповещений, программа работает! - person A B; 08.06.2016

Вам нужно изменить регулярное выражение на действительное

var tendigitnum = /^\d{10}$/;

и правильный доступ к значению элемента с

document.getElementsByName("inputnumber")[0].value

и вам нужно выполнить матч с

if (input_num.match(tendigitnum)) {
    //
}

function checknumber() {
    var tendigitnum = /^\d{10}$/; 
    var input_num = document.getElementsByName("inputnumber")[0].value;
    if (input_num.match(tendigitnum)) {
        alert("You entered: " + input_num);
    } else {
        alert("Please enter a valid 10 digit number!");
    }
}
<form name = submitnumber">
    <input type="text" size="15" name="inputnumber"></input>
    <button type="button" onclick="checknumber()">Check</button>
</form>

person Nina Scholz    schedule 08.06.2016