Esta es mi expresión regular de Javascript ^.*(?<!\/)$ que verifica si la URL no termina con una barra inclinada (/)
detecta: /play/popular ok: /play/popular/
¿Cómo puedo detectar si la URL no termina en / y no incluye ?id= ?
detecta: play/popular atrapar: play/popular/?id=448
depurador: https://regex101.com/r/sSDIic/2
Una forma es extender la mirada negativa hacia atrás para agregar opcionalmente el id= seguido de 1 o más dígitos.
^.*$(?<!\/(?:\?id=\d+)?)Demostración de expresiones regulares
Podría ser más fácil descartar id= en la cadena usando una búsqueda anticipada negativa, y hacer coincidir un carácter que no sea un espacio en blanco al final que no sea / si no puede terminar en un espacio.
^(?!.*\?id=).*[^\s/]$Demostración de expresiones regulares
Tenga en cuenta que .* también coincide con espacios, para coincidir solo con caracteres que no sean espacios en blanco, puede usar \S*