Мне нужно использовать 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);