使用unicode字符的Angular JS电子邮件验证
Angular JS Email Validation with unicode characters
我有一个应用程序的注册表单,angular js负责对其进行验证。
我遇到了一个问题,Angular js不接受带有撇号的电子邮件地址。"梨'lpeerh.shin@xyz.com"。
我发现angularJs不喜欢邮件地址中的unicode字符。
有没有人遇到这样的问题,我有兴趣知道我的选择,以摆脱这个bug在angularJs。
欢迎任何输入。谢谢!
如果有html5 <input type=email />
不是关键,你可以使用<input type=text />
和模式验证
<input type="text" ng-model="field" ng-pattern="EMAIL_REGEXP" />
你可以使用@Andy Joslin在他的回答
中发布的regex $scope.EMAIL_REGEXP = /^[a-z0-9!#$%&'*+/=?^_`{|}~.-]+@[a-z0-9-]+('.[a-z0-9-]+)*$/i;
AngularJS使用这个正则表达式来测试邮件:https://github.com/angular/angular.js/blob/master/src/ng/directive/input.js#L4
你能做的是自己写一个指令来检查它。只需从AngularJS中复制一个,并使用自己的regexp: https://github.com/angular/angular.js/blob/master/src/ng/directive/input.js#L606-L614
myApp.directive('nanuEmail', function() {
return {
restrict: 'A',
require: 'ngModel',
link: function(scope, elm, attrs, model) {
//change this:
var EMAIL_REGEXP = /^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+'.[A-Za-z]{2,4}$/;
var emailValidator = function(value) {
if (!value || EMAIL_REGEXP.test(value)) {
model.$setValidity('email', true);
return value;
} else {
model.$setValidity('email', false);
return undefined;
}
model.$parsers.push(emailValidator);
model.$formatters.push(emailValidator);
}
};
});
然后你可以这样做:
<input nanu-email ng-model="userEmail">
我刚刚更新了angular.js文件中的regex(在表达式中添加了" ' "),它工作了,没有做任何其他更改。
EMAIL_REGEXP =/^ [a - za - z0 - 9. - _ % + - 的] + @ [a - za - z0 - 9.] +。[A-Za-z]{2,4}/美元。谢谢Vittore,给了我更新REGEX的想法。:)
为什么返回undefined?
重构函数:
var verificationEmail = function (viewValue) {
if ((typeof viewValue != "undefined") && viewValue != "") {
return regex.test(viewValue);
}
};
Angular不支持在email Id中使用撇号('
)。如果你需要在Angular中验证撇号,你需要修改正则表达式:
(/^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+'.[A-Za-z]{2,4}$/)
:
/^[A-Za-z0-9._%+'-]+@[A-Za-z0-9.-]+'.[A-Za-z]{2,4}$/.
- php&js-将电子邮件添加到输入文本中
- 将用户制作的SVG(raphael.js)发送到服务器(php),以便通过电子邮件发送
- 使用节点JS发送电子邮件
- 页面上的2个表单带有JS验证-其中一个抛出电子邮件验证错误
- 使用React.js+Express.js发送电子邮件
- Angular js显示类似gmail的重叠电子邮件线程
- 如何检查当前用户电子邮件是否已在客户端js文件中验证
- Zendesk app.js示例用于发送外部电子邮件通知或AJAX请求
- 无法读取未定义的属性“用户名” - 通过电子邮件在 Node.js 中发送表单数据
- 从 Node.JS使用 MailGun 发送 HTML 电子邮件
- 在passport.js中使用令牌验证电子邮件
- 使用官方 Node.js SendGrid API 发送电子邮件时,响应 JSON 中可能出现哪些错误消息
- Node.js mongodb电子邮件验证
- 当用HTML5+JS+PHP设计发送到电子邮件的表单时,需要采取哪些良好的安全预防措施
- 使用Meteor.js发送电子邮件附件(电子邮件包和/或nodemailer或其他)
- 调用外部JS函数验证电子邮件
- 将extra_data发送到simplecart.js并将sendform发送到电子邮件地址
- 使用unicode字符的Angular JS电子邮件验证
- JS:电子邮件客户端弹出后,不能关闭当前窗口/选项卡
- 提交表单与HTML和JS电子邮件