|
|
@@ -93,10 +93,10 @@ function generateMaskSet(opts, nocache) {
|
|
|
}
|
|
|
|
|
|
function analyseMask(mask, regexMask, opts) {
|
|
|
- var tokenizer = /(?:[?*+]|\{[0-9+*]+(?:,[0-9+*]*)?(?:\|[0-9+*]*)?\})|[^.?*+^${[]()|\\]+|./g,
|
|
|
+ const tokenizer = /(?:[?*+]|\{[0-9+*]+(?:,[0-9+*]*)?(?:\|[0-9+*]*)?\})|[^.?*+^${[]()|\\]+|./g,
|
|
|
//Thx to https://github.com/slevithan/regex-colorizer for the regexTokenizer regex
|
|
|
- regexTokenizer = /\[\^?]?(?:[^\\\]]+|\\[\S\s]?)*]?|\\(?:0(?:[0-3][0-7]{0,2}|[4-7][0-7]?)?|[1-9][0-9]*|x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4}|c[A-Za-z]|[\S\s]?)|\((?:\?[:=!]?)?|(?:[?*+]|\{[0-9]+(?:,[0-9]*)?\})\??|[^.?*+^${[()|\\]+|./g,
|
|
|
- escaped = false,
|
|
|
+ regexTokenizer = /\[\^?]?(?:[^\\\]]+|\\[\S\s]?)*]?|\\(?:0(?:[0-3][0-7]{0,2}|[4-7][0-7]?)?|[1-9][0-9]*|x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4}|c[A-Za-z]|[\S\s]?)|\((?:\?[:=!]?)?|(?:[?*+]|\{[0-9]+(?:,[0-9]*)?\})\??|[^.?*+^${[()|\\]+|./g;
|
|
|
+ var escaped = false,
|
|
|
currentToken = new MaskToken(),
|
|
|
match,
|
|
|
m,
|
|
|
@@ -329,7 +329,6 @@ function analyseMask(mask, regexMask, opts) {
|
|
|
currentToken.matches = [];
|
|
|
closeRegexGroup = true;
|
|
|
}
|
|
|
-
|
|
|
break;
|
|
|
}
|
|
|
}
|
|
|
@@ -339,6 +338,13 @@ function analyseMask(mask, regexMask, opts) {
|
|
|
continue;
|
|
|
}
|
|
|
switch (m.charAt(0)) {
|
|
|
+ case "$":
|
|
|
+ case "^":
|
|
|
+ //ignore beginswith and endswith as in masking this makes no point
|
|
|
+ if (!regexMask) {
|
|
|
+ defaultCase();
|
|
|
+ }
|
|
|
+ break;
|
|
|
case "(?=": //lookahead
|
|
|
break;
|
|
|
case "(?!": //negative lookahead
|