Подскажите

Тема в разделе "Регулярные выражения", создана пользователем gauss_gauss, 14 янв 2012.

Статус темы:
Закрыта.
Модераторы: xpert13
  1. gauss_gauss

    gauss_gauss Постоялец

    Регистр.:
    13 окт 2011
    Сообщения:
    87
    Симпатии:
    4
    Надо следующее
    если слова содержит только символы латинского алфавита (незаглавные) и обратный слеш - вывести: "good"
    если слова содержат иные символы - вывести: "bad"

    вот код:
    PHP:
    <?php
     
    $var 
    "dasist\fantastisch";
     
    if (
    preg_match("/^[a-z\\]{0,}$/"$var)) {
            echo 
    "good";
    }
    else {
        echo 
    "badgood";
    }
     
    ?>
    При запуске скрипта пишет:

    Warning: preg_match() [function.preg-match]: Compilation failed: missing
    terminating ] for character class at offset 12 in
    G:\home\tester\www\test.php on line 5


    Подскажите, plz, как правилно написать?
     
  2. xpert13

    xpert13 <(*_*)>

    Moderator
    Регистр.:
    7 ноя 2008
    Сообщения:
    182
    Симпатии:
    453
    Экранировать слеши нужно не только с учетом регулярного выражения, но и с учетом особенности обработки строк в PHP

    PHP:
    <?php
     
    $var 
    "dasist\\fantastisch";
     
    if (
    preg_match("/^[a-z\\\\]{0,}$/"$var)) {
     
            echo 
    "good";
     
    }
     
    else {
     
        echo 
    "badgood";
     
    }
     
    ?>
    Ну если можно еще немного критики, то вместо такой комбинации {0,} лучше ставить *, а судя по условию, то лучше вообще ставить +, так как пустые строки будут проходить за подходящие
     
    gauss_gauss нравится это.
  3. gauss_gauss

    gauss_gauss Постоялец

    Регистр.:
    13 окт 2011
    Сообщения:
    87
    Симпатии:
    4
    вот ведь...совсем забыл про это! за критику, благодарю.
     
Статус темы:
Закрыта.