Подтвердить что ты не робот

Php допускает только буквы, цифры, пробелы и конкретные символы, используя pregmatch

на моем php я используйте preg_match для проверки входных текстов.

if(preg_match('/^[a-zA-Z0-9]+$/', $firstname)) {
}

Но это позволяет только буквенно-цифровое и не допускать пробелов. Я хочу разрешить пробелы, альфа и числовые. и период (.) и тире (-)

Пожалуйста, помогите мне здесь? спасибо заранее.

4b9b3361

Ответ 1

Используйте

preg_match('/^[a-z0-9 .\-]+$/i', $firstname)

Ответ 2

Если вы не только хотите разрешить ASCII, а затем используйте свойства Unicode:

preg_match('/^[\p{L}\p{N} .-]+$/', $firstname)

\p{L} - любая буква в любом языке, соответствует также символам на китайском, иврите, арабском и...

\p{N} любой тип числового символа (означает также, например, римские цифры)

если вы хотите ограничить цифры, используйте \p{Nd}

Ответ 3

Единственный трудный бит здесь - тире.

Для пробелов и точек вы можете просто добавить их в свой класс символов, например:

'/^[a-zA-Z0-9 .]+$/'

Легко.

Черта немного сложнее, потому что дефисы имеют особое значение в классе символов, подобном этому (как вы уже знаете, они используются для диапазонов символов типа a-z). Чтобы указать дефис в классе символов, он должен быть первым символом в классе (т.е. Он не должен находиться между двумя символами, в противном случае он рассматривается как маркер диапазона символов).

Таким образом, ваше выражение будет выглядеть следующим образом:

'/^[-a-zA-Z0-9 .]+$/'

Надеюсь, что это поможет.