2008-08-27 14 views
8

Después de enviar mi formulario web, se aplicará una expresión regular a la entrada del usuario en el lado del servidor (a través de PHP). Me gustaría tener la expresión regular idéntica ejecutándose en tiempo real en el lado del cliente para mostrarle al usuario cuál será la entrada real. Esto será más o menos lo mismo que la sección de Vista previa en las páginas de Ask Question en Stack Overflow excepto con PHP en el back-end en lugar de .NET.Hacer una expresión regular de JavaScript equivalente a una expresión regular PHP

¿Qué debo tener en cuenta para que mis expresiones regulares de PHP y JavaScript actúen exactamente igual entre ellas?

Respuesta

1

He encontrado que las diferentes implementaciones de expresiones regulares a menudo tienen diferencias sutiles en lo que son exactamente compatibles. Si quiere estar completamente seguro de que el resultado será el mismo en ambos frontend y back-end, la mejor opción sería hacer una llamada Ajax a su back-end de PHP y usar el mismo código PHP para ambas evaluaciones de expresiones regulares.

3

Si las expresiones regulares son simples, entonces no debería haber ningún problema, ya que los conceptos básicos de las expresiones regulares son comunes en la mayoría de las implementaciones.

Para los detalles, entonces sería mejor para estudiar ambas implementaciones:

http://www.regular-expressions.info/php.html

http://www.regular-expressions.info/javascript.html

aplicación Javascripts es probablemente la más básica, por lo que si usted va para un enfoque mínimo común denominador y luego apuntar a eso.

1

@LKM AJAX es el claro ganador aquí. Esto también le permitirá seguir el principio DRY. ¿Por qué querrías escribir tu código de análisis en Javascript y PHP?

+5

¿Por qué escribir dos veces? Porque funcionará más rápido para el usuario y ocupará menos ancho de banda. – TRiG

+3

No puede confiar en el lado del cliente, pero no desea hacer una petición HTTP si no desea, por lo que el mejor enfoque es analizar el código tanto en el cliente como en el servidor (el análisis del servidor es solo hecho porque no confías en el cliente!). – Adirael

0

Tanto la expresión regular de JavaScript como la preg_match de PHP están basadas en Perl, por lo que no debería haber ningún problema de portabilidad. Tenga en cuenta, sin embargo, que Javascript solo admite un subconjunto de modificadores que admite Perl.

Para obtener más información para comparar los dos:

En cuanto a la forma de entrega, me gustaría sugerir que tendría que utilizar JSON, el formato de intercambio de datos más delgado como de fecha (AFAIK) y directamente traducible a un objeto de JavaScript a través de eval(). Solo pon a ese chico malo en una sesión AJAX y deberías estar listo para continuar.

Espero que esto ayude :)

Cuestiones relacionadas