Регулярное выражение требует 10 цифр без учета пробелов - PullRequest
3 голосов
/ 19 августа 2011

Мне нужно регулярное выражение, чтобы ограничить число цифрами до 10, даже если есть пробелы.

Например, оно позволяет 06 15 20 47 23 так же, как 0615204723.

Я пытался: ^\d{10}$, но как игнорировать пробелы?

Кроме того, число должно начинаться с 06 или 07.(Примечание редактора, последнее требование было из комментариев ОП.)

Ответы [ 6 ]

6 голосов
/ 20 августа 2011

Это будет сделано в большинстве систем регулярных выражений.(Вам необходимо указать, какой язык вы используете!)

/^\s*(0\s*[67]\s*(?:\d\s*){8})$/


Но если вы действительно хотите только число, то разбейте его на 2 шага.Например, в JavaScript:

var s = ' 06 15 20 47   34 ';
s = s.replace (/\s/g, "");
isValid = /^0[67]\d{8}$/.test (s);
2 голосов
/ 19 августа 2011

Вы можете сделать:

"^(\d *){10}$"

1 голос
/ 10 сентября 2012

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

^(\s*\d\s*){10}$

eg. "1234567890"
    " 12  34 567   89 0    "

В более сложном примере игнорируются все пробелы, тире, круглые скобки и пробелы.

^([\s\(\)\-]*\d[\s\(\)\-]*){10}$

eg. "(123)456-7890"
    "   (   12 (3)( - 45 - 6-78 )(90 (((--  "

Протестируйте их здесь, он предоставит вам код для вашей системы: http://www.myregextester.com/index.php

0 голосов
/ 05 апреля 2016
var str = " a b c d e f g "; 
var newStr = str.replace(/\s+/g, ''); 
0 голосов
/ 19 августа 2011
(\s*\d\s*){0,10}

Это должно разрешить начальные и конечные пробелы вокруг цифр и совпадать с цифрами от 0 до 10.

0 голосов
/ 19 августа 2011

Чуть предпочтительнее:

"^\s?(\d\s?){10}$"

Где \ s - любой пробел, а \ d - цифра.Это учитывает как начальные, так и пропущенные и завершающие пробелы.

...