Intereting Posts
Замена переменных в строке Как я могу определить / рассчитать, есть ли маленькие изображения внутри большего изображения? Атрибут переменной атрибута: настройка каждого отображаемого текстового значения кнопок радио Facebook: сообщение на странице как вопрос страницы (токен доступа / php) Symfony 1.4 Session vs $ _SESSION Проблемы Перенаправление на диалог проверки подлинности – «Произошла ошибка. Пожалуйста, повторите попытку позже" Показывать текущий день посередине PHP Pack / unpack – может обрабатывать строки переменной длины Простой HTML-дом: как удалить элементы? exec из php вызывает ошибку «Преждевременный конец скриптовых заголовков: php-cgi.exe» перемещать объект с одной страницы на другую? Подключение к серверу Apache с использованием SSH и PHP / MYSQL Использование основных вызовов AJAX в Magento Создание массива без ключей в цикле получить категории, которые имеют подкатегории, используя laravel

Регулярные выражения: low-caps, точки, нулевые пробелы

как написать выражение, которое проверяет наличие нижних кадров, точек и без пробелов в строке?

код, указанный до сих пор, пытался проверить на наличие низких точек и точек (это все равно не работает!), но я не знаю, как добавить выражение в пробелы.

# 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.]+$/' должно быть правильным регулярным выражением.