jQuery selector regular expressions
You can use the filter
function to apply more complicated regex matching.
Here's an example which would just match the first three divs:
$('div') .filter(function() { return this.id.match(/abc+d/); }) .html("Matched!");
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script><div id="abcd">Not matched</div><div id="abccd">Not matched</div><div id="abcccd">Not matched</div><div id="abd">Not matched</div>
James Padolsey created a wonderful filter that allows regex to be used for selection.
Say you have the following div
:
<div class="asdf">
Padolsey's :regex
filter can select it like so:
$("div:regex(class, .*sd.*)")
Also, check the official documentation on selectors.
UPDATE: :
syntax Deprecation JQuery 3.0
Since jQuery.expr[':']
used in Padolsey's implementation is already deprecated and will render a syntax error in the latest version of jQuery, here is his code adapted to jQuery 3+ syntax:
jQuery.expr.pseudos.regex = jQuery.expr.createPseudo(function (expression) { return function (elem) { var matchParams = expression.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)); }});
These can be helpful.
If you're finding by Contains then it'll be like this
$("input[id*='DiscountType']").each(function (i, el) { //It'll be an array of elements });
If you're finding by Starts With then it'll be like this
$("input[id^='DiscountType']").each(function (i, el) { //It'll be an array of elements });
If you're finding by Ends With then it'll be like this
$("input[id$='DiscountType']").each(function (i, el) { //It'll be an array of elements });
If you want to select elements which id is not a given string
$("input[id!='DiscountType']").each(function (i, el) { //It'll be an array of elements });
If you want to select elements which name contains a given word, delimited by spaces
$("input[name~='DiscountType']").each(function (i, el) { //It'll be an array of elements });
If you want to select elements which id is equal to a given string or starting with that string followed by a hyphen
$("input[id|='DiscountType']").each(function (i, el) { //It'll be an array of elements });