javascript - 如何使用正则表达式在 javascript 中针对 php 电子邮件注入(inject)验证电子邮件地址?

标签 javascript regex email

我想避免在电子邮件地址中出现 % 符号。
因此用户不会在电子邮件中添加额外的 header 。

但是我对正则表达式完全不知所措,找不到解决方案。

目前为止

/[%]+/

但在我的整个代码中,这确实验证了像 test@example.com% 这样的电子邮件地址为真。
这是因为 Firefox 和 Chrome 有一个内部电子邮件检查 whan 为 input 指定 type="email"!!!

function validateEmail(sEmail) {
    var filter = /^[a-z0-9]+([-._][a-z0-9]+)*@([a-z0-9]+(-[a-z0-9]+)*\.)+[a-z]{2,4}$/;
        filter2 = /^(?=.{1,64}@.{4,64}$)(?=.{6,100}$).*/;
        filter3 = /[%]+/                
        if (filter.test(sEmail) && filter2.test(sEmail) && !filter3.test(sEmail)) {
           return true;
        } else {
           return false;
        }
    }

顺便说一句。因为到目前为止我完全无法自己写这个,所以我找到了两个解决方案,我不确定哪个更好。 上面的 (1) 或 2:

/^([\w-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([\w-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$/

你怎么看?

最佳答案

您不应该使用正则表达式来防止注入(inject)。而是使用准备好的 sql 语句:

$stmt = $dbh->prepare("INSERT INTO REGISTRY (name, value) VALUES (:name, :value)");
$stmt->bindParam(':name', $name);
$stmt->bindParam(':value', $value);

关于javascript - 如何使用正则表达式在 javascript 中针对 php 电子邮件注入(inject)验证电子邮件地址?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20291402/

相关文章:

javascript - 如何获得滚动和封面效果?

java - 查找 url 路径最后一部分的最快方法是什么?

php - 在php中使用POSIX正则表达式删除C源代码中的注释

ruby - 使用 net/smtp 向多个收件人发送电子邮件

php - 有没有办法用PHP来检查我的邮件内容是否是垃圾邮件?

javascript - 使用 RxJS 处理未知数量的连续 HTTP 请求

javascript - 无法在 'createObjectURL' : 上执行 'URL'

没有 JavaMail API 的 Java POP3 消息解析器

javascript - 将框架集与页面中的其他 HTML 元素一起使用

javascript - 重复捕获组