как написать выражение, которое проверяет наличие нижних кадров, точек и без пробелов в строке?
код, указанный до сих пор, пытался проверить на наличие низких точек и точек (это все равно не работает!), но я не знаю, как добавить выражение в пробелы.
# check for matches of lowcaps or lowcaps with a dot if (!preg_match('/([a-z0-9]|[a-z0-9\.])/', $cst_value)) { $error = true; echo ' please use lowcaps only with dot(s) and without any spacing.'; }
есть идеи?
большое спасибо, Лау
[a-z0-9.]
соответствует строчной букве или цифре или точке.
[^a-z0-9.]
соответствует всем символам, которые не являются строчной буквой или цифрой или точкой.
Поэтому, если /[^a-z0-9.]/
соответствует где угодно, строка содержит нечто, отличное от lc-letter, digit или dot. Если это не соответствует вашему условию, выполняется.
if ( !preg_match('/[^a-z0-9.]/', $cst_value) ) { // only lower-case letters, digits or dots }
или без цифр
if ( !preg_match('/[^az.]/', $cst_value) ) { // only lower-case letters or dots }
update: example:
foreach( array('abcdef', 'abc de', 'abc.de', 'aBcde') as $cst_value) { echo $cst_value, ': '; if ( !preg_match('/[^az.]/', $cst_value) ) { echo " ok.\n"; } else { echo "failure\n"; } }
печать
abcdef: ok. abc de: failure abc.de: ok. aBcde: failure
Я думаю, вы этого хотите:
if ( preg_match( '/[^a-z0-9.]/' ) ) { $error = true; }
Имейте в виду, я удалил!. Теперь, если это соответствует, вы получите сообщение об ошибке. VolkerK отменил его, но забыл удалить!, Я думаю.
Кроме того, http://regexpal.com/ является вашим другом.
/^[a-z0-9.]+$)/
Должен это делать. Подумайте только, что допускаются только маленькие буквы, точки и цифры . Выражение не будет соответствовать, если включено какое-либо белое пространство. Btw. вам не нужно избегать метасимволов в группе захвата.
^
и $
указывает, что вся строка должна содержать только те символы в группе захвата (они отмечают начало и конец строки), а символ +
указывает, что должен произойти хотя бы один из этих символов. В зависимости от ваших потребностей вы можете изменить его, например, на {3,}
что означает, что строка должна содержать не менее 3 символов.
Пример:
$values=array("fooBar", "123.45", "foo bar", "foo.bar"); foreach($values as $value) { if (!preg_match('/^[a-z0-9.]+$/', $value)) { echo "Not valid: $value\n"; } }
печатает:
Not valid: fooBar Not valid: foo bar
'/^[a-z0-9.]+$/'
должно быть правильным регулярным выражением.