Проверьте пробелы в начале строки - PullRequest
1 голос
/ 24 апреля 2010

Мне нужно использовать preg_match, чтобы проверить, что только a-z0-9. используется (включая полную остановку (.)). Я не хочу ничего заменять. Моя проблема в том, что он не замечает пробелы в начале строки.

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

Что у меня так далеко:

("/[^a-z0-9.]+$/",$request)

Спасибо!

Ответы [ 4 ]

6 голосов
/ 24 апреля 2010

Вы можете сделать это без регулярного выражения, используя ltrim'

if(ltrim($request) != $request) { // there was whitespace }

1 голос
/ 24 апреля 2010
/^(?!.*\.{2,}.*$)[a-z0-9.]+$/

Объяснение

^          # start-of-string anchor
(?!        # begin negative look-ahead ("a position not followed by...")
  .*       # anything
  \.{2,}   # a dot, two times or more
  .*       # anything
  $        # the end of the string
)          # end negative lookahead
[a-z0-9.]+ # a-z or 0-9 or dot, multiple times
$          # end-of-string anchor

соответствует

  • "abc"
  • "abc123"
  • "abc.123"

не может

  • " abc"
  • "abc..123"
  • "abc!"
0 голосов
/ 24 апреля 2010

^ inside [] отрицает characers (меняет значение на «любой символ кроме этих»)

^ за пределами [] означает «начало строки» (так же, как $ означает «конец строки»)

Итак, вам нужно что-то подобное:

("/^[a-z0-9.]+$/",$request)

Если вы хотите исключить последовательности точек, но не отдельных точек, вам нужно что-то более сложное:

preg_match('/^([a-z0-9]|(?<!\\.)\\.)+$/', $request);

0 голосов
/ 24 апреля 2010
("/[^a-z0-9.]/",$request)

Редактировать - я неправильно понял ваш вопрос. Это проверит, чтобы увидеть, есть ли какие-либо не a-z0-9. символы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...