|
997 | 997 |
|
998 | 998 | // figure out position of time elements.. cause js cant do named captures
|
999 | 999 | var getFormatPositions = function(timeFormat) {
|
1000 |
| - var finds = timeFormat.toLowerCase().match(/(h{1,2}|m{1,2}|s{1,2}|l{1}|t{1,2}|z)/g), |
| 1000 | + var finds = timeFormat.toLowerCase().match(/(h{1,2}|m{1,2}|s{1,2}|l{1}|t{1,2}|z|'.*?')/g), |
1001 | 1001 | orders = {
|
1002 | 1002 | h: -1,
|
1003 | 1003 | m: -1,
|
|
1020 | 1020 | var o = extendRemove(extendRemove({}, $.timepicker._defaults), options || {});
|
1021 | 1021 |
|
1022 | 1022 | var regstr = '^' + timeFormat.toString()
|
1023 |
| - .replace(/h{1,2}/ig, '(\\d?\\d)') |
1024 |
| - .replace(/m{1,2}/ig, '(\\d?\\d)') |
1025 |
| - .replace(/s{1,2}/ig, '(\\d?\\d)') |
1026 |
| - .replace(/l{1}/ig, '(\\d?\\d?\\d)') |
1027 |
| - .replace(/t{1,2}/ig, getPatternAmpm(o.amNames, o.pmNames)) |
1028 |
| - .replace(/z{1}/ig, '(z|[-+]\\d\\d:?\\d\\d|\\S+)?') |
1029 |
| - .replace(/\s/g, '\\s?') + |
1030 |
| - o.timeSuffix + '$', |
| 1023 | + .replace(/(hh?|mm?|ss?|[tT]{1,2}|[lz]|'.*?')/g, function (match) { |
| 1024 | + switch (match.charAt(0).toLowerCase()) { |
| 1025 | + case 'h': return '(\\d?\\d)'; |
| 1026 | + case 'm': return '(\\d?\\d)'; |
| 1027 | + case 's': return '(\\d?\\d)'; |
| 1028 | + case 'l': return '(\\d?\\d?\\d)'; |
| 1029 | + case 'z': return '(z|[-+]\\d\\d:?\\d\\d|\\S+)?'; |
| 1030 | + case 't': return getPatternAmpm(o.amNames, o.pmNames); |
| 1031 | + default: // literal escaped in quotes |
| 1032 | + return '(' + match.replace(/\'/g, "").replace(/(\.|\$|\^|\\|\/|\(|\)|\[|\]|\?|\+|\*)/g, function (m) { return "\\" + m; }) + ')?'; |
| 1033 | + } |
| 1034 | + }) |
| 1035 | + .replace(/\s/g, '\\s?') + |
| 1036 | + o.timeSuffix + '$', |
1031 | 1037 | order = getFormatPositions(timeFormat),
|
1032 | 1038 | ampm = '',
|
1033 | 1039 | treg;
|
|
0 commit comments