javascript - 限制接受包含非英文字符的电子邮件

标签 javascript regex email email-validation

首先,我检查了可能的解决方案,但找不到有助于解决我的问题的方法。

简而言之,我现有的逻辑可以从用户处获取电子邮件并测试一些条件,例如确保它没有撇号、双@符号和连续点等。该逻辑不是使用正则表达式实现的。

现在,我有新的要求,我们需要限制用户输入非英文字符,我所说的限制是指在用户输入非英文字符时 try catch 它,或者在将值传递给正在验证其他字符的 JavaScript 函数时捕获它条件同上。

所以我在这里找到了一些答案并尝试了它们:here

这是我的代码:

<input type="text" id="ctEmailAddress" name="ctEmailAddress" autocomplete="off"
          size="40" maxlength="255" value="${userinfo.emailAddress}" oncopy="return false;" onpaste="return false;" onkeypress="suppressNonEng(event)">

和脚本:

function suppressNonEng(event){
    var englishAlphabetAndWhiteSpace = /[A-Za-z ]/g;
    var key = String.fromCharCode(event.which);
    if (englishAlphabetAndWhiteSpace.test(key)) {
        return true;
    }
    alert ("this is not in English");
    return false;
}

所以我使用了链接中的js函数,它与当前逻辑是分开的。问题是,它仍然允许传递非英语字符,例如法语。

这同样适用于这个函数:

function suppressNonEng(event){
    var key = event.which;
    if(key > 128){
        alert("Email address can be entered only in English. Please try again.");
    }
}

同样,法语字母通过它没有问题。

我的问题是,如何确保该值仅为英文字符?我应该使用正则表达式还是有更好的解决方案?请指教。谢谢。

最佳答案

描述

[^\x00-\x7F]+

Regular expression visualization

此正则表达式将匹配 ASCII 0-127 之外的任何字符

示例

现场演示

https://regex101.com/r/qN7eP6/1

示例文本

Here are some sample non-english characters: ü, ö, ß, and ñ. 

示例匹配

[0][0] = ü
[1][0] = ö
[2][0] = ß
[3][0] = ñ

说明

NODE                     EXPLANATION
----------------------------------------------------------------------
  [^\x00-\x7F]+            any character except: ascii 0-127 also known as
                           '\x00' to '\x7F' (1 or more times 
                           (matching the most amount possible))
----------------------------------------------------------------------

关于javascript - 限制接受包含非英文字符的电子邮件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37488594/

相关文章:

javascript - JavaScript 包含图像时出错

javascript - 向上方向的 jquery SlideToggle 效果?

javascript - 检查以任意顺序包含 3 个连续字母和 2 个数字的字符串

python - 正则表达式 Python 在单个表达式中提取两个字符串之间的数字

html - 我们可以从静态 html 页面发送电子邮件吗?

c# - Outlook 电子邮件是否有非二进制格式?

javascript - 打印窗口不会在 chrome 最新版本中打印整页

regex - 如何在Elasticsearch中搜索具有冒号(:)值的字段

python - 如何在 Django 中发送具有特定 mimetype 的电子邮件?

javascript - npm start 在 cmd 中不起作用,并且显示错误,如图所示?