限制接受非英文字符的电子邮件
Restrict accepting email that has non English characters
首先,我检查了可能的解决方案,但找不到有助于解决我的问题的东西。
简而言之,我有现有的逻辑可以从用户那里获取电子邮件并测试一些条件,比如确保它没有撇号、双@符号和连续的点等。该逻辑不是使用正则表达式实现的。
现在,我有新的要求,我们需要限制用户输入非英文字符,限制我的意思是尝试在用户输入非英文字符时捕获它,或者在值传递给 [=34= 时捕获它] 正在验证上述其他条件的函数。
所以我在这里找到了一些答案并尝试了它们: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;
}
所以我使用了link中的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]+
此正则表达式将匹配 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))
----------------------------------------------------------------------
首先,我检查了可能的解决方案,但找不到有助于解决我的问题的东西。
简而言之,我有现有的逻辑可以从用户那里获取电子邮件并测试一些条件,比如确保它没有撇号、双@符号和连续的点等。该逻辑不是使用正则表达式实现的。
现在,我有新的要求,我们需要限制用户输入非英文字符,限制我的意思是尝试在用户输入非英文字符时捕获它,或者在值传递给 [=34= 时捕获它] 正在验证上述其他条件的函数。
所以我在这里找到了一些答案并尝试了它们: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;
}
所以我使用了link中的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]+
此正则表达式将匹配 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))
----------------------------------------------------------------------