Регулярные выражения: 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.';
}
любые идеи?
Большое спасибо,
Lau
Я думаю, вы этого хотите:
if ( preg_match( '/[^a-z0-9.]/' ) ) {
$error = true;
}
Имейте в виду, я удалил!. Теперь, если это соответствует, вы получите сообщение об ошибке. VolkerK отменил его, но забыл удалить!, Я думаю.
Кроме того, http://regexpal.com/ является вашим другом.
[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('/[^a-z.]/', $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('/[^a-z.]/', $cst_value) ) {
echo " ok.\n";
}
else {
echo "failure\n";
}
}
печатает
abcdef: ok.
abc de: failure
abc.de: ok.
aBcde: failure
'/^[a-z0-9.]+$/'
должно быть правильным регулярным выражением.
/^[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
- Вопросы
- Whitespace
- Регулярные выражения: low-caps, точки, нулевые пробелы