You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用jQuery-Inputmask邮箱扩展别名允许输入超过3个点的邮箱地址

Fixing jQuery Inputmask for Multi-Level Domain Emails

Hey there! I totally get how frustrating it is when a seemingly small input issue blocks users, especially when you've already spent hours digging for solutions. Let's break down why your current email mask is failing for addresses like johndoe@building.school.district.state.us and fix it.

The Root Problem

The default "email" mask in jQuery Inputmask has a built-in limitation on how many subdomains it allows. It's designed to handle standard emails with a single top-level domain (like .com or .us), but falls short when there are multiple nested domains (like .school.district.state.us). Your attempts to add custom mask rules were on the right track, but the syntax was off, which is why they either didn't work or broke the existing functionality.

Solution: Custom Flexible Email Mask

Instead of trying to patch the default "email" mask, let's build a custom one that supports multi-level domains while keeping all the real-time input validation you need. Here's a tested configuration:

$(".email-input").inputmask({
  // Custom mask allowing multiple subdomains in both local and domain parts
  mask: "*{1,64}[.*{1,64}][.*{1,64}][.*{1,64}]@*{1,255}[.*{2,63}][.*{2,63}][.*{2,63}][.*{2,63}]",
  showMaskOnHover: false,
  // Regex enforcing valid email structure (matches RFC standards)
  regex: "^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}$",
  greedy: false, // Don't force the mask to fill all available slots
  // Clean up pasted values (remove mailto: and normalize case)
  onBeforePaste: function (pastedValue, opts) {
    pastedValue = pastedValue.toLowerCase();
    return pastedValue.replace("mailto:", "");
  },
  // Define valid characters for email segments per RFC standards
  definitions: {
    '*': {
      validator: "[a-zA-Z0-9!#$%&'*+/=?^_`{|}~-]",
      cardinality: 1,
      casing: "lower" // Optional: enforce lowercase if your use case requires it
    }
  }
});

Let's Break This Down

  • Mask Structure: The [.*{X,Y}] segments are optional repeats that let users add extra dots and characters in both the local (before @) and domain (after @) parts. I included 3 repeats for the local part and 4 for the domain—you can add more if you need to support even deeper nested domains.
  • Regex Validation: The regex acts as a final check to ensure the full input matches standard email formatting, so users can't enter invalid structures even if the mask allows individual valid characters.
  • Definitions: The * definition restricts input to symbols allowed in emails per RFC rules, preventing users from typing characters that don't belong in an email address.

Testing Tips

  • Try entering johndoe@building.school.district.state.us—you should now be able to input all the dots without issues.
  • Test edge cases like emails with multiple dots in the local part (e.g., john.doe.jr@company.co.uk) to make sure those still work as expected.
  • If you need to support even more domain levels, just add another [.*{2,63}] segment to the mask after the @ symbol.

Why This Works Better Than Patching the Default Mask

The default "email" mask is hardcoded with stricter domain limits, so modifying it directly is error-prone. By building a custom mask, you get full control over the structure while maintaining the real-time input restriction you need—no need to remove the mask entirely.

Hope this fixes your issue! Let me know if you need to tweak any part of the configuration for your specific use case.

内容的提问来源于stack exchange,提问作者Jeremiah McElroy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.27 18:07:48