javascript - Jquery限制输入长度为n封电子邮件

标签 javascript jquery regex

我有一个表单,其中的输入字段正在接收电子邮件。我想将用户输入的电子邮件限制为 2 或其他值。

一切正常,除了在最后一个电子邮件域名扩展之后,我的代码限制了域名扩展的最后一个字符。

JSFiddle在这里:http://jsfiddle.net/fd1xdohg/

这是我的代码:

HTML:

<input id="emails"></input>
<label id="lbl"></label>

JS:

$("#emails").keypress(function () {
    pEmails_tmp = extractEmails($('#emails').val());
    if (pEmails_tmp.length >= 2) {
        $("#emails").attr('maxlength', $('#emails').val().length);
    }
});

function extractEmails(text) {
    return text.match(/([a-zA-Z0-9._-]+@[a-zA-Z0-9._-]+\.[a-zA-Z0-9._-]+)/gi);
}

尝试提供 2 封电子邮件,用空格(或您想要的任何内容)分隔,您会发现它不允许您在“.”之后写入域名扩展名。点。

有什么想法如何将输入字段限制为 n 封电子邮件吗?

最佳答案

在您编写域 TLD 的第一个字符后,它会限定正则表达式,并且不允许您再输入。

我解决这个问题的方法是在第二个末尾需要一个空格,然后不再让任何空格通过。

return text.match(/([a-zA-Z0-9._-]+@[a-zA-Z0-9._-]+\.[a-zA-Z0-9._-]+)\s/gi);
//                                                                   ^^ there

关于javascript - Jquery限制输入长度为n封电子邮件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26575487/

相关文章:

javascript - 如何从 .js 代码确定 JavaScript 引擎?

java - 如何将这个正则表达式从 Perl 翻译成 Java?

jquery - 如何在jquery中查找元素的文本

jquery - 通过 $.ajax 调用返回附件

javascript - Underscore.js 和 jQuery 可以互补吗?

java - 使用正则表达式从 Java 中的引号中提取两个字符串?

javascript - 如何在 javascript 中使用正则表达式匹配并返回零?

javascript - 如何根据条件栏向表行添加类?

javascript - 从未在 ApiController 中调用 Post 方法

javascript - Chrome 扩展程序将文本添加到可编辑的上下文菜单中