регулярное выражение для индийских мобильных номеров - PullRequest
45 голосов
/ 28 сентября 2010

Я хочу регулярное выражение для индийских мобильных номеров, которое состоит из 10 цифр.
Числа, которые должны совпадать, начинаются с 9, 8 или 7.

Например:

9882223456
8976785768
7986576783

Оно не должно совпадать с числами, начинающимися с 1 до 6 или 0.

Ответы [ 16 ]

0 голосов
/ 09 марта 2019

Вы можете использовать это

/^(?:(?:\+|0{0,2})91(\s*|[\-])?|[0]?)?([6789]\d{2}([ -]?)\d{3}([ -]?)\d{4})$/

Действительные записи:

6856438922
7856128945
8945562713
9998564723
+91-9883443344
09883443344
919883443344
0919883443344
+919883443344
+91-9883443344
0091-9883443344
+91 9883443344
+91-785-612-8945
+91 999 856 4723

Неправильные записи:

WAQU9876567892
ABCD9876541212
0226-895623124
0924645236
0222-895612
098-8956124
022-2413184

Подтвердите его на https://regex101.com/

0 голосов
/ 11 января 2019

In Swift

 extension String {
    var isPhoneNumber: Bool {
      let PHONE_REGEX = "^[7-9][0-9]{9}$";
      let phoneTest = NSPredicate(format: "SELF MATCHES %@", PHONE_REGEX)
      let result =  phoneTest.evaluate(with: self)
      return result
   }
}
0 голосов
/ 01 июля 2017
/(((^[\+,0][9][1])(((\s[0-9]{7,10})|(\S[0-9]{7,10}))|([-]\S[0-9]{7,10})))|((^[\+,0][2]{2,2})((\S[0-9]{7,8})|((([-])[0-9]{7,8})|(\s[0-9]{7,8})))))|(((^[6,7,8,9][0-9]{9,9}))|(^[0,\+](([9][1)|[6,7,8,9]))[0-9]{8,9}))/gm

Я не знаю, существует ли простое выражение для этого, но я создал этот REGEX, который проверяет все возможные индийские числа, которые содержат (0 или +), то (91 или 22 (так как мне это было нужно для Махараштры и во-вторых) является то, что в Индии слишком много кодов ЗППП)) или непосредственно ищет числа, начинающиеся с 6,7,8,9, которые имеют / не имеют 0 перед ним.

(/ [regex] / gm) - это пробная версия для многострочного поиска, которую можно удалить (// gm), если она не работает или выдает ошибку.

Не стесняйтесь попробовать на regex101 . Мой проект этого REGEX здесь .

0 голосов
/ 17 апреля 2016

Решения (^[789]\d{9}$ или ^[789][0-9]{9}$), о которых говорят другие, имеют один большой поток (если он используется для проверки формы). Он также проверяет числа, имеющие более 10 цифр.По сути, наше (поскольку я также использовал это) регулярное выражение находит действительное число, помещенное в любом месте строки. Например, 123456 9897969594 12345.

Проблема может быть решена путем дополнительной проверки длины строки, содержащей число.Как это if(regex.test(value) && value.length==10)/****do whatever*****/alert("Valid Number");

Примечание: - Согласно моим тестам, regex.test(value) проверяет только римские цифры для этого выражения ^[789]\d{9}$ как в firefox (mozilla), так и в chrome (webkit)

0 голосов
/ 28 ноября 2015

Если вы пытаетесь получить несколько мобильных номеров в одном и том же тексте (re.findall), то вам, вероятно, следует использовать следующее. Он в основном совпадает с теми, что уже упоминались, но у него также есть специальные оглядка и заглядывание утверждений, так что мы не выбираем номер мобильного телефона сразу или сразу сопровождаемый цифрой. Я также добавил 0? непосредственно перед тем, как захватить фактический номер мобильного телефона, для обработки особых случаев, когда люди добавляют 0 к номеру мобильного телефона.

(?<!\d)(?:\+91|91)?\W*(?P<mobile>[789]\d{9})(?!\d)

Вы можете попробовать это на pythex.org !

0 голосов
/ 29 апреля 2014

Вот регулярное выражение, предназначенное для соответствия типичным телефонным номерам:

^(((\+?\(91\))|0|((00|\+)?91))-?)?[7-9]\d{9}$
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...