2016-11-08 7 views
-2

Это мой код:регулярных выражений в PHP: может содержать, но не должен

<?php 
if(preg_match('"^[0-9 ]*/[0-9 ]*$"', "1 23/45 67 89")) { 
    echo "Match pattern!"; 
} else { 
    echo "Doesn't match pattern!"; 
} 
?> 

Как изменится: Строка может содержать /, но не должен содержать /, чтобы соответствовать шаблону?

Примеры:

"1 23/45 67 89"; match pattern 
"1 2345 67 89"; match pattern 
"1 23/45 /67 89" doesn't match pattern (because of two `/`) 
"1 23/45 67A 89" doesn't match pattern (because of unhallowed character `A`) 
+0

*, но не нужно *? – Jim

+0

«не нужно», я думаю. Таким образом, либо /, либо с помощью '/'. – junkfoodjunkie

+0

Если в строке есть '/', нужно ли это делать только один раз? – junkfoodjunkie

ответ

1

Это должно работать, то:

<?php 
if(preg_match('"(^[0-9 ]*\/[0-9 ]*$)|(^[0-9 ]*$)"', "1 23/45 67 89")) { 
    echo "Match pattern!"; 
} else { 
    echo "Doesn't match pattern!"; 
} 
?> 
+0

Спасибо, это именно то, что я искал. – David

+1

Почему не просто '^ [0-9] * (?: \/[0-9] *)? $' –

+0

Потому что я не так хорош с регулярным выражением, и я использую то, что знаю, работает :) Это работает просто Прекрасно, и я кое-что узнал. – junkfoodjunkie

1

Ввод ? после того, как образец делает его по желанию. Так что регулярное выражение должно делать то, что вы хотите:

'"^[0-9 ]*/?[0-9 ]*$"' 

См Optional Items

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