Вопрос регулярного выражения Javascript - PullRequest
1 голос
/ 10 ноября 2009

У меня есть регулярное выражение, которое проверяет, имеет ли значение хотя бы 10 цифр:

if (foo.match(/^\d{10,}$/))
{
 // At least 10 digits
}

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

Я могу проверить 10-значную часть, используя foo.length, но как мне изменить приведенное выше регулярное выражение, чтобы проверить, есть ли в foo только числа. Есть идеи?

Ответы [ 6 ]

3 голосов
/ 10 ноября 2009

Вы уже проверяете, что в нем есть только цифры. Вы указываете, что шаблон должен совпадать с началом строки ^, после которого должно быть не менее десяти цифр, после чего следует сразу конец строки $

Пропустите туда все не-цифры, и шаблон не будет соответствовать

Это означает, что если вы хотите разделить тест на два этапа, например, имея два разных сообщения об ошибках, вы можете сначала проверить длину, а затем все еще использовать этот шаблон регулярного выражения.

2 голосов
/ 10 ноября 2009

Одно решение: измените квалификацию с «10 или более» на «один или более», таким образом:

if (foo.match(/^\d+$/))
{
 // At least 1 digit
}

Если допустима пустая строка, используйте * вместо + для соответствия «ноль или более».

0 голосов
/ 10 ноября 2009
// Invalid: A non-digit is present
if ( foo.match(/\D/) ) {
   console.warn("Only numbers accepted");
}
// Invalid: foo is all digits, but less than 10 digits
else if ( foo.length < 10 ) {
    console.warn("Minimum 10 digits required");
}
// foo is valid
else {
    console.info("Great success");
}
0 голосов
/ 10 ноября 2009

Сбой, если

foo.match(/\D/)
0 голосов
/ 10 ноября 2009
var containsOnlyNumbers = /^\d+$/.test(foo);
0 голосов
/ 10 ноября 2009
if (foo.match(/^\d+$/)) {
//all digits
  if(foo.length == 10) {
    //all digits + 10 lenght
    //do whatever
  }
} else {
  //issue error message
}

Это один из способов. Хотя я не понимаю, зачем тебе это нужно. Ваше собственное регулярное выражение уже гарантирует, что его длина составляет 10 символов И что эти 10 символов не могут быть ничем иным, как числами

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...