Мне нужно использовать preg_match чтобы проверить, что только a-z0-9. (включая полную остановку (.)). Я не хочу ничего менять. Моя проблема в том, что она не замечает пробел в начале строки.
Кроме того, если кто-то знает, как проверить, нет ли двух полных остановок подряд, я был бы очень благодарен.
Что я до сих пор:
("/[^a-z0-9.]+$/",$request)
Благодаря !
Вы можете сделать это без регулярного выражения, используя ltrim'
if(ltrim($request) != $request) { // there was whitespace }
/^(?!.*\.{2,}.*$)[a-z0-9.]+$/
объяснение
^ # старт-строка-якорь
(?! # начать негативный взгляд вперед («позиция, за которой не следует ...»)
.* # что-нибудь
\. {2,} # точка, два или более раза
.* # что-нибудь
$ # конец строки
) # end negative lookahead
[a-z0-9.] + # az или 0-9 или точка, несколько раз
$ # end-of-string anchor
Матчи
"abc" "abc123" "abc.123" терпит неудачу
" abc" "abc..123" "abc!" ("/[^a-z0-9.]/",$request)
Изменить – я неправильно понял ваш вопрос. Это проверит, есть ли какие-либо не a-z0-9. персонажи.
^ внутри [] отрицает characers (изменения означают «любой символ, кроме этих»)
^ вне [] означает «начало строки» (так же, как $ означает «конец строки»)
Поэтому вам нужно что-то вроде этого:
("/^[a-z0-9.]+$/",$request)
Если вы хотите исключить последовательности точек, но не одиночные точки, вам нужно что-то более сложное:
preg_match('/^([a-z0-9]|(?<!\\.)\\.)+$/', $request);