var str = "sdhdhh@gmail.com"; // true but coming false
var str1 = "sdhdhh@gmail.co.uk"; 
var str2 = "sdhdhh@gmail.org";
var str3 = "sdhdhh@gmail.org.uk";
var patt = new RegExp("[a-z0-9._%+-]+@[a-z0-9.-]+?[\.com]?[\.org]?[\.co.uk]?[\.org.uk]$");
console.log( str + " is " + patt.test(str));
console.log( str1 + " is " + patt.test(str1));
console.log( str2 + " is " + patt.test(str2));
console.log( str3 + " is " + patt.test(str3));

有人能告诉我错误出在哪里吗?我的.com示例不能正常工作

推荐答案

你需要

  • 分组 struct 而不是字符类
  • 一种正则表达式文字表示法,因此您不必对特殊字符进行双重转义
  • ^锚定在模式的开头,因为您需要同时使用^$才能使模式与整个字符串匹配.

所以你需要使用

var patt = /^[a-z0-9._%+-]+@[a-z0-9.-]+?(?:\.com|\.org|\.co\.uk|\.org\.uk)$/;

请看regex demo.

如果需要使其不区分大小写,则添加i标志,

var patt = /^[a-z0-9._%+-]+@[a-z0-9.-]+?(?:\.com|\.org|\.co\.uk|\.org\.uk)$/i;

Javascript相关问答推荐

如何通过继承contentitable属性的元素捕捉keydown事件?

基于每个索引迭代嵌套对象

如何使用React渲染器放置根dis?

使用json文件字符串来enum显示类型字符串无法按照计算的enum成员值的要求分配给类型号

zoom svg以适应圆

我不知道为什么setwritten包装promise 不能像我预期的那样工作

为什么我的列表直到下一次提交才更新值/onChange

将字符串UTC Date转换为ngx—counting leftTime配置值的数字

未定义引用错误:未定义&Quot;而不是&Quot;ReferenceError:在初始化&Quot;之前无法访问';a';

如何修复我的数据表,以使stateSave正常工作?

对路由DOM嵌套路由作出react

如何在Bootstrap中减少网格系统中单个div的宽度

我想将Sitecore搜索面过滤器从多个转换为单个

警告框不显示包含HTML输入字段的总和

为列表中的项目设置动画

使用RxJS from Event和@ViewChild vs KeyUp事件和RxJS主题更改输入字段值

如何在Java脚本中并行运行for或任意循环的每次迭代

Chart.js Hover线条在鼠标离开时不会消失

在对象的嵌套数组中添加两个属性

使用python,我如何判断一个html复选框是否被隐藏,以及它是否被S选中?