¿Cómo puedo seleccionar un elemento por ID con jQuery usando regex?

Tengo los siguientes elementos de entrada:

   

AAA y BBB son constantes y siempre sabré cuáles son. Sin embargo, RandomString siempre será aleatorio.

Quiero obtener el valor de AAA_RandomString_BBB. No quiero que los valores de los elementos de entrada con ID terminen en _Start o _End.

Intenté el siguiente:

 $('[id^="AAA_"]') 

Pero lo anterior selecciona todos los elementos de entrada que tienen una ID que comienza con “AAA_”

Necesito alguna forma de seleccionar usando una syntax tipo regex como:

 $('[id^="AAA_(.+?)_BBB"]') 

es posible? Si no, ¿alguien puede sugerir un método de selección?

Puede combinar ambos selectores en un selector de atributos múltiples .

 ​$("[id^=AAA_][id$=_BBB]") 

Devolverá todos los elementos que coinciden con todos los filtros de atributos especificados:

  • [id^=AAA_] coincide con los elementos con el atributo id comienza con AAA_ , y
  • [id$=_BBB] coincide con los elementos con el atributo id termina con _BBB .

Otras alternativas genéricas:

  • Usando un selector personalizado :regex() ,
  • Usando un enfoque basado en .filter() .

Utilizar esta:

 $('[id^="AAA_"][id$="_BBB"]') 

Fiddle: http://jsfiddle.net/J6hGx/

Esto se puede hacer así:

 $('input').filter(function(){ return this.id.match(/^AAA_.+_BBB$/) }) 

Puede usar $('input', ) para hacer la búsqueda más precisa. Ver también aquí

Puede buscar los identificadores que comienzan con AAA y terminan con BBB esta manera:

 ​$("[id^=AAA_][id$=_BBB]") 

El violín de trabajo: http://jsfiddle.net/DN9uV/

Utilizo para resolver esto con los selectores de clase que no necesitan ser únicos.

Esto también tiene un efecto positivo en la velocidad porque no se requiere una búsqueda compleja. Además, puede usar esto para diferentes estilos de elementos diferentes.

p.ej

 element type aa element type aa element type aa and bb element type bb 

Ahora puedes simplemente usar el selector de clase

 $('.aa').click(function(){ console.log( 'clicked type aa #' + $(this).attr('id') ); }); $('.bb').click(function(){ console.log( 'clicked type bb #' + $(this).attr('id') ); }); 

Sería mejor simplemente verificar la terminación de ID en _BBB por

  $("[id$=_BBB]") 

Qué tal esto :

 < !DOCTYPE html>