регулярные выражения в делфи

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by bertys, 10 Oct 2012.

  1. bertys

    bertys New Member

    Joined:
    25 Jan 2012
    Messages:
    162
    Likes Received:
    0
    Reputations:
    0
    Помогите написать регулярку для делфи для сбора мобильных телефонов, украины и росии.
    Уже много перепробувал, ничего не выходит

    И как задать в регулярном выражении такое
    x.y
    (x-любое число от 0 до 432; y- любое число от 0-432)

    Заранее благодарен
     
  2. Sharp.Net

    Sharp.Net New Member

    Joined:
    28 Jul 2012
    Messages:
    39
    Likes Received:
    3
    Reputations:
    1
    432 на регулярке невозможно, только если:
    x = [0-4][0-9][0-9]
    н = [0-4][0-9][0-9]
    но она до 499...

    т.к просто [1-499] сделать нельзя. А дай пример украинского телефона - составлю регулярку... а лучше несколько
     
  3. bertys

    bertys New Member

    Joined:
    25 Jan 2012
    Messages:
    162
    Likes Received:
    0
    Reputations:
    0
    Если можно то чтоб проверяло правильность оператора (чтоб не было +380005864758)

    +380668547854
    80675894125
    0954785124
    380634585147

    Коды мобильных операторов Украины
    039;050;063;066;067;068;091;092;093;094;095;096;097;098;099

    П.С. Может у кого то есть для росии рабочая регулярка
     
  4. Белый Ворон

    Joined:
    7 Oct 2012
    Messages:
    46
    Likes Received:
    3
    Reputations:
    0
    PHP:
    string input1 "430"input2 "434"
    string pattern "[01234][0123][012]"
    Console.WriteLine(Regex.IsMatch(input1pattern)); // true
    Console.WriteLine(Regex.IsMatch(input2pattern)); // false
    Console.Read();
    проблема в том, что должно быть 3 цифры.
     
  5. mironich

    mironich Elder - Старейшина

    Joined:
    27 Feb 2011
    Messages:
    733
    Likes Received:
    73
    Reputations:
    19
    WTF?!
    Code:
     "[\d]{3}";  //3цифры подряд в диапазоне 0-9
     
  6. Белый Ворон

    Joined:
    7 Oct 2012
    Messages:
    46
    Likes Received:
    3
    Reputations:
    0
    не тормози - сникерсни.
    432 должно вернуть true, а 433 уже нет.
    твоё вернет true даже для 999
     
  7. mironich

    mironich Elder - Старейшина

    Joined:
    27 Feb 2011
    Messages:
    733
    Likes Received:
    73
    Reputations:
    19
    Короче хз что там ты модулируешь но твоя рег-ка работает правильно - возвращает правильные значение.
     
  8. bertys

    bertys New Member

    Joined:
    25 Jan 2012
    Messages:
    162
    Likes Received:
    0
    Reputations:
    0
    Форумчане, помогите плз, ничего не выходит
     
  9. Белый Ворон

    Joined:
    7 Oct 2012
    Messages:
    46
    Likes Received:
    3
    Reputations:
    0
    Я могу тебе помочь. Но я не понял что же тебе нужно.
    На вторую часть вопроса я уже ответил.
    Объясни поподробнее, какой текст должен выдавать совпадение, а какой нет.
    Сформулируй яснее задачу.
     
  10. bertys

    bertys New Member

    Joined:
    25 Jan 2012
    Messages:
    162
    Likes Received:
    0
    Reputations:
    0

    Мне нужны регулярки для поиска русских моб номеров, украинских моб номеров (отдельно), если можно чтоб проверяло операторов на правильность (чтоб не было +380005864758)

    Примеры укр номеров:
    +380668547854
    80675894125
    0954785124
    380634585147

    Коды мобильных операторов Украины
    039;050;063;066;067;068;091;092;093;094;095;096;097;098;099
     
  11. cardons

    cardons Elder - Старейшина

    Joined:
    19 Jul 2005
    Messages:
    778
    Likes Received:
    324
    Reputations:
    83
    Не очень понятна задача. А не проще будет проверять с конца номера? К примеру
    Code:
    [\d]{10}$
    То есть независимо от длины номера берем и проверяем если с конца есть хотябы 10 символов то это номер телефона.
    Далее берем первые 3 цифры из 10 с конца этого номера переводим в Int и сравниваем если они подходят к нам то это тот или иной оператор.
    То есть в случае с +380668547854
    Берем по регулярке последние 10 цифр 0668547854
    Далее берем из этого первые 3 это 066.
    Переводим их в Int и сравниваем.
     
  12. Sharp.Net

    Sharp.Net New Member

    Joined:
    28 Jul 2012
    Messages:
    39
    Likes Received:
    3
    Reputations:
    1
    Ну вообще-то это элементарно,
    чтобы было несколько вариантов, надо сделать так:
    допустим, возможные варианты это aaa,bbb,ccc,ddd
    Составим регулярку:
    string pattern = "[[aaa]|[bbb]|[ccc]|[ddd]]";
    Т.е выходит что она примет как раз те значения, что нам надо. А опознать таким образом просто, нужно узнать все коды украинских телефонов, т.е с чего начинаются все украинские телефоны, и место aaa,bbb,ccc,ddd подсунуть значения этих кодов.
    Всё просто ;)