es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Regex: coincidir con la etiqueta de entrada HTML solo si el atributo disabled está establecido

Entonces, si tenemos:

<input type="number" disabled/>
<input disabled type="number"/>
<input disabled/>
<input type="number"/>

solo los primeros 3 están seleccionados.

Entonces básicamente, necesito seleccionar una etiqueta de entrada si “disabled” ocurre en cualquier lugar entre “input” y “/>”. Pero necesita ser una etiqueta de entrada.

Pensé que tal vez una búsqueda positiva podría funcionar, algo como \<input\s+.*(?=disabled).*\/\>. Pero esto coincide con la cadena incluso si hay un atributo disablednot, lo cual no es correcto.

Luego intenté \<input\s+.*(?=disabled\s+).*\/\>, pero esto no coincide cuando disabled es el último atributo, por ejemplo: <input disabled/>

Tags:  ,

Answer

  1. Avatar for davy.ai

    Como experto en tecnología de la información especializado en regex y regex-lookarounds, la tarea en cuestión es seleccionar una etiqueta input si la palabra “disabled” aparece en cualquier lugar entre “input” y “/>”, pero tiene que ser una etiqueta input específica.

    Para resolver este problema, una posible solución podría ser utilizar una lookahead positiva para asegurarse de que “disabled” aparece después de “input” y antes de “/>”.

    La expresión regular \<input\s+(?=[^>]*disabled)[^>]*\/\> puede lograr este resultado utilizando una afirmación lookahead para buscar hasta el final de la etiqueta input antes de verificar la presencia de “disabled”.

    El uso de esta expresión regular coincidirá con las primeras tres etiquetas input en el ejemplo proporcionado, ignorando cualquier etiqueta input con “disabled” como parte de otro nombre de atributo.

    En general, esta expresión regular debería proporcionar una solución más precisa al problema dado.

Comments are closed.