inputmask.extensions.js 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  1. /*
  2. Input Mask plugin extensions
  3. http://github.com/RobinHerbots/jquery.inputmask
  4. Copyright (c) 2010 - Robin Herbots
  5. Licensed under the MIT license (http://www.opensource.org/licenses/mit-license.php)
  6. Version: 0.0.0-dev
  7. Optional extensions on the jquery.inputmask base
  8. */
  9. (function (factory) {
  10. if (typeof define === "function" && define.amd) {
  11. define(["./inputmask"], factory);
  12. } else if (typeof exports === "object") {
  13. module.exports = factory(require("./inputmask"));
  14. } else {
  15. factory(window.Inputmask);
  16. }
  17. }
  18. (function (Inputmask) {
  19. //extra definitions
  20. Inputmask.extendDefinitions({
  21. "A": {
  22. validator: "[A-Za-z\u0410-\u044F\u0401\u0451\u00C0-\u00FF\u00B5]",
  23. casing: "upper" //auto uppercasing
  24. },
  25. "&": { //alfanumeric uppercasing
  26. validator: "[0-9A-Za-z\u0410-\u044F\u0401\u0451\u00C0-\u00FF\u00B5]",
  27. casing: "upper"
  28. },
  29. "#": { //hexadecimal
  30. validator: "[0-9A-Fa-f]",
  31. casing: "upper"
  32. }
  33. });
  34. Inputmask.extendAliases({
  35. "cssunit": {
  36. regex: '[+-]?[0-9]+\\.?([0-9]+)?(px|em|rem|ex|%|in|cm|mm|pt|pc)'
  37. },
  38. "url": { //needs update => https://en.wikipedia.org/wiki/URL
  39. regex: "(https?|ftp)//.*",
  40. autoUnmask: false
  41. },
  42. "ip": { //ip-address mask
  43. mask: "i[i[i]].i[i[i]].i[i[i]].i[i[i]]",
  44. definitions: {
  45. "i": {
  46. validator: function (chrs, maskset, pos, strict, opts) {
  47. if (pos - 1 > -1 && maskset.buffer[pos - 1] !== ".") {
  48. chrs = maskset.buffer[pos - 1] + chrs;
  49. if (pos - 2 > -1 && maskset.buffer[pos - 2] !== ".") {
  50. chrs = maskset.buffer[pos - 2] + chrs;
  51. } else chrs = "0" + chrs;
  52. } else chrs = "00" + chrs;
  53. return new RegExp("25[0-5]|2[0-4][0-9]|[01][0-9][0-9]").test(chrs);
  54. }
  55. }
  56. },
  57. onUnMask: function (maskedValue, unmaskedValue, opts) {
  58. return maskedValue;
  59. },
  60. inputmode: "numeric",
  61. },
  62. "email": {
  63. //https://en.wikipedia.org/wiki/Domain_name#Domain_name_space
  64. //https://en.wikipedia.org/wiki/Hostname#Restrictions_on_valid_host_names
  65. //should be extended with the toplevel domains at the end
  66. mask: "*{1,64}[.*{1,64}][.*{1,64}][.*{1,63}]@-{1,63}.-{1,63}[.-{1,63}][.-{1,63}]",
  67. greedy: false,
  68. casing: "lower",
  69. onBeforePaste: function (pastedValue, opts) {
  70. pastedValue = pastedValue.toLowerCase();
  71. return pastedValue.replace("mailto:", "");
  72. },
  73. definitions: {
  74. "*": {
  75. validator: "[0-9\uFF11-\uFF19A-Za-z\u0410-\u044F\u0401\u0451\u00C0-\u00FF\u00B5!#$%&'*+/=?^_`{|}~\-]"
  76. },
  77. "-": {
  78. validator: "[0-9A-Za-z\-]"
  79. }
  80. },
  81. onUnMask: function (maskedValue, unmaskedValue, opts) {
  82. return maskedValue;
  83. },
  84. inputmode: "email"
  85. },
  86. "mac": {
  87. mask: "##:##:##:##:##:##"
  88. },
  89. //https://en.wikipedia.org/wiki/Vehicle_identification_number
  90. // see issue #1199
  91. "vin": {
  92. mask: "V{13}9{4}",
  93. definitions: {
  94. 'V': {
  95. validator: "[A-HJ-NPR-Za-hj-npr-z\\d]",
  96. casing: "upper"
  97. }
  98. },
  99. clearIncomplete: true,
  100. autoUnmask: true
  101. }
  102. });
  103. return Inputmask;
  104. }));