首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >最小化正则表达式

最小化正则表达式
EN

Stack Overflow用户
提问于 2015-09-29 11:56:41
回答 1查看 126关注 0票数 0

。我需要帮助与regExp的电子邮件验证。我一直在这个问题上自作主张。

要求:“电子邮件地址的本地部分和域部分应接受以下内容:

  • 大写和小写拉丁字母(a-z,A-Z)
  • 数字0至9
  • 这些特殊字符:#-_~!$&‘*+=和百分位数编码,即%20
  • 性格。(点,句号,句号)如果它不是第一个或最后一个字符,并且它不连续出现(例如不允许John..Doe@example.com )。

我正在使用jquery验证器进行验证,我得到了正则表达式。

代码语言:javascript
运行
复制
 /^[a-z0-9,!#\$%&'\*\+/=\?\^_`\{\|}~-]+(\.[a-z0-9,!#\$%&'\*\+/=\?\^_`\{\|}~-]+)*@[a-z0-9,!#\$%&'\*\+/=\?\^_`\{\|}~-]+(\.[a-z0-9,!#\$%&'\*\+/=\?\^_`\{\|}~-]+)*\.([a-z0-9,!#\$%&'\*\+/=\?\^_`\{\|}~-]{2,})$/

有人能缩小这个正则表达式吗?

验证

应该有效: him@g#mail.com

不应该工作: him@g..mail.com

小提琴:http://jsfiddle.net/p6mw3/120/

EN

回答 1

Stack Overflow用户

发布于 2015-09-29 12:47:52

您可以将重复部分声明为构建块,并在构建整个RegExp时进行重用。另外,我将[a-z0-9_]替换为\w,因为您还需要支持大写拉丁字母(\w = [a-z0-9A-Z_]),并从字符类中删除过多的转义符号。

代码语言:javascript
运行
复制
var rx_block = "[\\w,!#$%&'*+/=?^`{|}~-]"; // <-- REPETITIVE BLOCK
var component = {
    input   : $('input[name="email"]'),
    mensage : {
        fields  : $('.msg'),
        success : $('.success'),
        error   : $('.error')
    }
},
regex = RegExp("^" + rx_block + "+(\\." + rx_block + "+)*@" + rx_block +
     "+(\\." + rx_block + "+)*\\.(" + rx_block + "{2,})$");  // <-- BUILD REGEX DYNAMICALLY WITH REGEXP CONSTRUCTOR

component.input.blur(function () {
    component.mensage.fields.hide();
    regex.test(component.input.val()) ? 
            component.mensage.success.show() : component.mensage.error.show();
});
代码语言:javascript
运行
复制
.msg {
    display: none;
}
.error {
    color: red;
}
.success {
    color: green;
}
代码语言:javascript
运行
复制
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<label for="email" id="email">Hey!</label>
<input id="email" name="email" type="email" class="required" /> 
<span class="msg error">You shall not pass!</span>
<span class="msg success">You can pass!</span>

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32843385

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档