Strane RegExp

Ho queste 2 RegExp una JS e l'altra PHP, quella php funziona perfettamente, quella js non fa uscire gli alert anche se volutamente la inserisco sbagliata, eppure i codici sono identici :wallbash:

Se tolgo la parte in rosso funziona

var reg = new RegExp("^((http(s)?:\/\/)|(www\.))+[A-Za-z0-9]+(\.[A-Za-z0-9]+)?(\.[A-Za-z0-9+)?(\.[a-z]{2,4})(\/[A-Za-z0-9]+)?((\/[A-Za-z0-9]+)(\.[a-z]{2,4}+)([-_!*?=#&$;:.\/\/A-Za-z0-9]+)?)?$","");

if (!preg_match("/^((http(s)?:\/\/)|(www\.))+[A-Za-z0-9]+(\.[A-Za-z0-9]+)?(\.[A-Za-z0-9]+)?(\.[a-z]{2,4})(\/[A-Za-z0-9]+)?((\/[A-Za-z0-9]+)(\.[a-z]{2,4}+)([-_!*?=#&$;:.\/\/A-Za-z0-9]+)?)?$/",$url)){

inviato 10 anni fa
php
php
6
modificato 10 anni fa
X 0 X

Ho risolto, il motivo semplice: in JS ci vogliono 2 barre inverse mentre in php una:

Per chi le volesse usare:

JS

var reg = new RegExp("^((http(s)?:\/\/)|(www\\.))+[-_A-Za-z0-9]+(\\.[-_A-Za-z0-9]+)?(\\.[-_A-Za-z0-9]+)?(\\.[a-z]{2,4})(\/[-_A-Za-z0-9]+)?(\/[-_A-Za-z0-9]+)?(\/[-_A-Za-z0-9]+)(\\.[a-z]{2,4})(\\?[-_!*=#&$;:.\/\/A-Za-z0-9]+)?$","");

PHP

if (!preg_match("/^((http(s)?:\/\/)|(www\.))+[-_A-Za-z0-9]+(\.[-_A-Za-z0-9]+)?(\.[-_A-Za-z0-9]+)?(\.[a-z]{2,4})(\/[-_A-Za-z0-9]+)?(\/[-_A-Za-z0-9]+)?(\/[-_A-Za-z0-9]+)(\.[a-z]{2,4})(\?[-_!*=#&$;:.\/\/A-Za-z0-9]+)?$/",$url)){

risposto 10 anni fa
php
php
6
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda