Pregunta jQuery Selector de expresiones regulares


Estoy buscando documentación sobre el uso de comodines o expresiones regulares (no estoy seguro de la terminología exacta) con un selector jQuery.

Lo busqué yo mismo, pero no he podido encontrar información sobre la sintaxis y cómo usarlo. ¿Alguien sabe dónde está la documentación de la sintaxis?

EDITAR: los filtros de atributo le permiten seleccionar en función de los patrones de un valor de atributo.


513
2017-10-10 05:40


origen


Respuestas:


James Padolsey creó un maravilloso filtro que permite que regex se use para la selección.

Digamos que tienes lo siguiente div:

<div class="asdf">

Padolsey :regex filtro puede seleccionarlo así:

$("div:regex(class, .*sd.*)")

Además, verifique documentación oficial sobre selectores.


305
2017-10-10 05:41



Puedes usar el filter función para aplicar la coincidencia de expresiones regulares más complicada. Aquí hay un ejemplo que simplemente coincidiría con los tres primeros divs (demostración en vivo aquí)

<div id="abcd"></div>
<div id="abccd"></div>
<div id="abcccd"></div>
<div id="abd"></div>
$('div')
    .filter(function() {
        return this.id.match(/abc+d/);
    })
    .html("Matched!");

662
2017-10-11 07:06



Estos pueden ser útiles.

Si estás encontrando por Contiene entonces será así

    $("input[id*='DiscountType']").each(function (i, el) {
         //It'll be an array of elements
     });

Si estás encontrando por Comienza con entonces será así

    $("input[id^='DiscountType']").each(function (i, el) {
         //It'll be an array of elements
     });

Si estás encontrando por Termina con entonces será así

     $("input[id$='DiscountType']").each(function (i, el) {
         //It'll be an array of elements
     });

Si desea seleccionar elementos que ID no es una cadena dada

    $("input[id!='DiscountType']").each(function (i, el) {
         //It'll be an array of elements
     });

Si desea seleccionar elementos que id contiene una palabra dada, delimitada por espacios

     $("input[id~='DiscountType']").each(function (i, el) {
         //It'll be an array of elements
     });

Si desea seleccionar elementos que id es igual a una cadena dada o comenzando con esa cadena seguida de un guión

     $("input[id|='DiscountType']").each(function (i, el) {
         //It'll be an array of elements
     });

215
2017-07-14 15:59



Si su uso de expresiones regulares está limitado a probar si un atributo comienza con una cierta cadena, puede usar el selector ^ jquery

Por ejemplo, si desea seleccionar solo div con id que empiece por "abc", puede usar $("div[id^='abc']")

Se pueden encontrar muchos selectores muy útiles para evitar el uso de expresiones regulares aquí: http://api.jquery.com/category/selectors/attribute-selectors/


40
2017-11-05 11:43



var test = $('#id').attr('value').match(/[^a-z0-9 ]+/);

¡Aqui tienes!


20
2018-03-29 14:22



Los ids y las clases siguen siendo atributos, por lo que puede aplicarles un filtro de atributo regexp si selecciona en consecuencia. Leer más aquí: http://rosshawkins.net/archive/2011/10/14/jquery-wildcard-selectors-some-simple-examples.aspx


6
2018-04-28 14:47



Agregue una función jQuery,

(function($){
    $.fn.regex = function(pattern, fn, fn_a){
        var fn = fn || $.fn.text;
        return this.filter(function() {
            return pattern.test(fn.apply($(this), fn_a));
        });
    };
})(jQuery);

Entonces,

$('span').regex(/Sent/)

seleccionará todos los elementos de tramo con coincidencias de texto / Enviados /.

$('span').regex(/tooltip.year/, $.fn.attr, ['class'])

seleccionará todos los elementos de tramo con sus clases coincidentes /tooltip.year/.


6
2017-08-21 04:55



$("input[name='option[colour]'] :checked ")

1
2017-12-09 11:24