Регулярные выражения: низкие заглавные буквы, точки, пробелы - PullRequest
1 голос
/ 27 августа 2010

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

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

# 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.';
}

Ответы [ 4 ]

3 голосов
/ 27 августа 2010

[a-z0-9.] соответствует строчной букве или цифре или точке.
[^a-z0-9.] соответствует всем символам, которые не являются строчной буквой или цифрой или точкой.
Так что если /[^a-z0-9.]/ соответствует везде, где строка содержит что-то отличное от lc-буквы, цифры или точки.Если оно не соответствует, ваше условие выполнено.

if ( !preg_match('/[^a-z0-9.]/', $cst_value) ) {
  // only lower-case letters, digits or dots
}

или без цифр

if ( !preg_match('/[^a-z.]/', $cst_value) ) {
  // only lower-case letters or dots
}

обновление: пример:

foreach( array('abcdef', 'abc de', 'abc.de', 'aBcde') as $cst_value) {
  echo $cst_value, ': ';
  if ( !preg_match('/[^a-z.]/', $cst_value) ) {
    echo " ok.\n";
  }
  else {
    echo "failure\n";
  }
}

печать

abcdef:  ok.
abc de: failure
abc.de:  ok.
aBcde: failure
0 голосов
/ 27 августа 2010

'/^[a-z0-9.]+$/' должно быть правильным регулярным выражением.

0 голосов
/ 27 августа 2010

Я думаю, вы хотите это:

if ( preg_match( '/[^a-z0-9.]/' ) ) {
    $error = true;
}

Имейте в виду, я удалил!.Теперь, если это соответствует, вы получаете ошибку.VolkerK отменил это, но забыл удалить!, Я думаю.

Кроме того, http://regexpal.com/ ваш друг.

0 голосов
/ 27 августа 2010
 /^[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
...