
正文
jQuery 正则选择器
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
http://james.padolsey.com/snippets/regex-selector-for-jquery/
A while ago I published an article explaining the utter awesomeness of extending jQuery’s filter selectors. Building on that here’s something new; a regular expression selector. jQuery’s current attribute selectors (CSS3) do allow basic regex notation but no where near as much as this:
:regex
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));
}
Usage
jQuery.expr[':'].regex = function(elem, index, match) {
|
It’s pretty simple to use, you need to pass an attribute and a regular expression to match against. The regular expression must be in non-literal notation; so replace all backslashes with two backslashes (e.g.
^\w+$
->
^\\w+$
).
// Select all elements with an ID starting a vowel: |
Note: All searches are case in sensitive; you can change this by removing the ‘i’ flag in the plugin.
This plugin also allows you to query CSS styles with regular expressions, for example:
// Select all elements with a width between 100 and 300: |
Additionally it allows you to query data strings added to elements via jQuery’s ‘data’ method:
// Add data property to all images (just an example); |
Have fun!








