I'm usually using Perl's Class::XPath and Tree::XPathEngine modules
and there the Perl-style regex matching operators "=~" and "!~" are
available as operators in the XPath filters. What I'm speaking about?
Well, for example selections like: [EMAIL PROTECTED] =~ "^.+(gif|jpe?g|png)$"]

I know that this is neither strict CSS nor XPath syntax, but for being
able to leverage from the full power of regular expressions directly in
the jQuery selectors I found the following small change to the jQuery
core very useful.

At least it satisfied me and my personal Tree::XPathEngine background
and perhaps it is also useful for someone else in the jQuery community.
Find the current patch (against jQuery SVN as of today) appended. Feel
free to do whatever you want with it...

                                       Ralf S. Engelschall
                                       [EMAIL PROTECTED]
                                       www.engelschall.com

Index: jquery/src/selector/selector.js
===================================================================
--- jquery/src/selector/selector.js     (revision 1611)
+++ jquery/src/selector/selector.js     (working copy)
@@ -52,6 +52,8 @@
                "@": {
                        "=": "z==m[4]",
                        "!=": "z!=m[4]",
+                       "=~": "z.match(RegExp(m[4]))!=null",
+                       "!~": "z.match(RegExp(m[4]))==null",
                        "^=": "z&&!z.indexOf(m[4])",
                        "$=": "z&&z.substr(z.length - 
m[4].length,m[4].length)==m[4]",
                        "*=": "z&&z.indexOf(m[4])>=0",
@@ -67,7 +69,7 @@
        // The regular expressions that power the parsing engine
        parse: [
                // Match: [EMAIL PROTECTED]'test'], [EMAIL PROTECTED]
-               /^\[ *(@)([\w-]+) *([!*$^=]*) *('?"?)(.*?)\4 *\]/,
+               /^\[ *(@)([\w-]+) *([!*$^~=]*) *('?"?)(.*?)\4 *\]/,

                // Match: [div], [div p]
                /^(\[)\s*(.*?(\[.*?\])?[^[]*?)\s*\]/,

Reply via email to