регулярное выражение php preg_match

Все еще возникают проблемы с RegEx. Необходимо сопоставить следующие символы

а-зА-з9-0 , . ' " ( ) _ - : (ПРОСТРАНСТВО)

Не все значения будут иметь все это, но могут их иметь. У меня есть все, кроме круглых скобок, одинарных и двойных квот.

/^[\w. ,\/:_-]+$/ 

ОБНОВИТЬ:

У меня это работает с этим: "/^[\w. ,:()'\"-]+$/"

$val_1 = "Abh acb 123 . - _ 's ";
$val_2 = "Asc";
$val_3 = "234";
$val_4 = "nj%"; // Fail
$val_5 = "Help (me)";
$val_6 = "What's wrong?"; // Fail
$val_7 = "She's here";
$val_8 = "No: 123.00, 432.00";
$val_9 = 'Need to " Double" ';

$var_array = array($val_1, $val_2, $val_3, $val_4, $val_5, $val_6, $val_7, $val_8, $val_9);

foreach ($var_array as $k=>$d) {
    if ((preg_match("/^[\w. ,:()'\"-]+$/", $d))) {
        echo "Yeah it matches!!!<span style='color:green'>".$d."</span><br />";
    } else {
        echo "Try again, thie FAILED<span style='color:red'>".$d."</span><br />";
    }
}

Всем спасибо за помощь


person Phill Pafford    schedule 29.09.2009    source источник


Ответы (3)


Чтобы соответствовать всем этим, вам просто нужно:

preg_match("/[a-zA-Z0-9,.'\"()_- :]/", $string);
person user97410    schedule 29.09.2009
comment
Должен экранировать - :) Это выдаст ошибку таким образом или не будет работать правильно (возможно, этот) - person bisko; 30.09.2009
comment
У меня есть почти такое же совпадение, и я не избегаю дефисов, работает нормально :) - person user97410; 30.09.2009

/^[-a-zA-Z0-9,.'"()_: ]+$/ 

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

person bisko    schedule 29.09.2009

С помощью другой отправки я нашел решение, которое работает:

"/^[\w. ,:()'\"-]+$/"

Спасибо всем за помощь

person Phill Pafford    schedule 30.09.2009