"$=": "z&&z.substr(z.length - m[4].length,m[4].length)==m[4]",
"*=": "z&&z.indexOf(m[4])>=0",
"": "z",
+ // these are for evaling in a regexp.
+ "=~": "eval(m[4]).test(z)",
+ "!~": "!eval(m[4]).test(z)",
_resort: function(m){
return ["", m[1], m[3], m[2], m[5]];
},
// The regular expressions that power the parsing engine
parse: [
// Match: [@value='test'], [@foo]
- /^\[ *(@)([\w-]+) *([!*$^=]*) *('?"?)(.*?)\4 *\]/,
+ /^\[ *(@)([\w-]+) *([!*$^=!~]*) *('?"?)(.*?)\4 *\]/,
// Match: [div], [div p]
/^(\[)\s*(.*?(\[.*?\])?[^[]*?)\s*\]/,
// Match: :even, :last-chlid, #id, .class
new RegExp("^([:.#]*)(" +
- ( jQuery.chars = "(?:[\\w\u0128-\uFFFF*-]|\\\\.)" ) + "+)")
+ ( jQuery.chars = "(?:[\\w\u0128-\uFFFF*_-]|\\\\.)" ) + "+)")
],
token: [
// An attempt at speeding up child selectors that
// point to a specific element tag
- var re = /^[\/>]\s*([\w*-]+)/;
+ var re = new RegExp("^[/>]\\s*(" + jQuery.chars + "+)");
var m = re.exec(t);
if ( m ) {
} else {
// Optomize for the case nodeName#idName
- var re2 = new RegExp("^(\\w+)(#)(" + jQuery.chars + "+)");
+ var re2 = new RegExp("^(" + jQuery.chars + "+)(#)(" + jQuery.chars + "+)");
var m = re2.exec(t);
// Re-organize the results, so that they're consistent