на моем php я использую preg_match
для проверки входных текстов.
if(preg_match('/^[a-zA-Z0-9]+$/', $firstname)) { }
Но это позволяет только буквенно-цифровое и не допускать пробелов. Я хочу разрешить пробелы, альфа и числовые. и период (.) и тире (-)
Пожалуйста, помогите мне здесь? заранее спасибо.
использование
preg_match('/^[a-z0-9 .\-]+$/i', $firstname)
Если вы не только хотите разрешить ASCII, но и используйте свойства Unicode :
preg_match('/^[\p{L}\p{N} .-]+$/', $firstname)
\p{L}
– любая буква на любом языке, соответствует и китайским, ивриту, арабским, … символам.
\p{N}
любой тип числового символа (означает, например, римские цифры)
если вы хотите ограничить цифры, используйте \p{Nd}
Единственный трудный бит здесь – тире.
Для пробелов и точек вы можете просто добавить их в свой класс символов, например:
'/^[a-zA-Z0-9 .]+$/'
Легко.
Черточка немного сложнее, потому что дефисы имеют особое значение в классе символов, подобном этому (как вы уже знаете, они используются для диапазонов символов, таких как az
). Чтобы указать дефис в классе символов, он должен быть первым символом в классе (т. Е. Он не должен находиться между двумя символами, в противном случае он рассматривается как маркер диапазона символов).
Таким образом, ваше выражение будет:
'/^[-a-zA-Z0-9 .]+$/'
Надеюсь, это поможет.