Skip to content

Instantly share code, notes, and snippets.

@fny
Created February 22, 2012 21:22
Show Gist options
  • Save fny/1887398 to your computer and use it in GitHub Desktop.
Save fny/1887398 to your computer and use it in GitHub Desktop.
Regex Selector for jQuery - James Padolsey
jQuery.expr[':'].regex = function(elem, index, match) {
var matchParams = match[3].split(','),
validLabels = /^(data|css):/,
attr = {
method: matchParams[0].match(validLabels) ?
matchParams[0].split(':')[0] : 'attr',
property: matchParams.shift().replace(validLabels,'')
},
regexFlags = 'ig',
regex = new RegExp(matchParams.join('').replace(/^\s+|\s+$/g,''), regexFlags);
return regex.test(jQuery(elem)[attr.method](attr.property));
}
@KevinDrew
Copy link

I don't understand.
What is the large code snippet at the top? Do I put that into my js so that these lines from the Usage will work? I tried this, and I got

SyntaxError: syntax error
method: matchParams[].match(validLabels) ?

Help appreciated. Thanks

@verglas
Copy link

verglas commented Sep 29, 2013

@KevinDrew

http://james.padolsey.com/javascript/regex-selector-for-jquery/

jQuery.expr[':'].regex = function(elem, index, match) {
    var matchParams = match[3].split(','),
        validLabels = /^(data|css):/,
        attr = {
            method: matchParams[0].match(validLabels) ? 
                        matchParams[0].split(':')[0] : 'attr',
            property: matchParams.shift().replace(validLabels,'')
        },
        regexFlags = 'ig',
        regex = new RegExp(matchParams.join('').replace(/^\s+|\s+$/g,''), regexFlags);
    return regex.test(jQuery(elem)[attr.method](attr.property));
}

@KES777
Copy link

KES777 commented Jul 3, 2016

You have error at this line:

regex = new RegExp(matchParams.join('').replace(/^s+|s+$/g,''), regexFlags);

Do not forget backslash before 's'

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment