2013-09-11 3 views
1

Как я могу заверить себя, что строка содержит только JUST numbers и pipe (или также) запятые, charcters? EG: все символы являются только цифры и трубы или цифры, запятые и трубы толькоregex гарантирует, что строка содержит только трубы, цифры и/или запятые,

EG: 
1|2,2|3 = true 
1|2  = true 
bob  = false 
bob|yes,no = false 

это, насколько я получил до сих пор

if (preg_match('/^[0-9|]|[0-9,|]+$/', $str)){ 
    //if all of the characters are only numbers and pipes or numbers, commas and pipes only 

} 
+3

@Itay, нет необходимости, чтобы избежать '|' внутри '[]', потому что специальный символ теряет смысл внутри '[]'. – falsetru

ответ

3

Попробуйте следующее:

function ensure($str) { 
    return (bool) preg_match('/^[\d|,]+$/', $str); 
} 

var_dump(ensure('1|2,2|3')); 
var_dump(ensure('1|2')); 
var_dump(ensure('16|2')); 
var_dump(ensure('bob')); 
var_dump(ensure('bob|yes,no')); 
var_dump(ensure('')); 

печатает

bool(true) 
bool(true) 
bool(true) 
bool(false) 
bool(false) 
bool(false) 
+0

http://ideone.com/x3y7vO – falsetru

+0

на данный момент я думаю, что цифры больше 10 не работают EG: 16 | 2, возможно, это было не так с моим оригиналом, эти цифры не имеют потолка – user26676

+1

@ user26676, It работает, как ожидалось. Есть ли окружающие пространства? – falsetru

Смежные вопросы