¿Cómo puedo verificar que la cadena contenga solo letras, números y espacios en cualquier idioma?

Lo he intentado a continuación, pero no comprueba caracteres especiales como - * /.

 preg_match("/[\p{L}]/u", $string )
 preg_match("/[\p{N}]/u", $string  )
2
Dream 30 ago. 2020 a las 16:57

1 respuesta

La mejor respuesta

Puede usar

preg_match('~^[\p{L}\p{N}\s]+$~uD', $string)

Detalles

  • ^ - inicio de cadena
  • [\p{L}\p{N}\s]+: una o más letras, dígitos o espacios en blanco
  • $ - fin de la cadena.

El modificador u habilitará el análisis de cadenas Unicode y también hará que todos los patrones en la expresión regular sean compatibles con Unicode, y D hará que $ coincida con el final de la cadena. .

3
Wiktor Stribiżew 30 ago. 2020 a las 13:58