JavaScript 在电子邮件周围拆分字符串
JavaScript split string around emails
所以我有这个电子邮件列表:
john.doe@doe.com
john.doe@doe.com
john.doe@doe.com
john.doe@doe.com
john.doe@doe.com
john.doe@doe.com
john.doe@doe.com
john.doe@doe.com
它以字符串的形式出现,有时每行末尾都有一个返回字符,有时没有。我希望能够做的是使用正则表达式从字符串中提取每封电子邮件。
所以我从这里得到了这个正则表达式:
function validateEmail(email) {
var re = /^(([^<>()[']''.,;:'s@'"]+('.[^<>()[']''.,;:'s@'"]+)*)|('".+'"))@(('[[0-9]{1,3}'.[0-9]{1,3}'.[0-9]{1,3}'.[0-9]{1,3}'])|(([a-zA-Z'-0-9]+'.)+[a-zA-Z]{2,}))$/;
return re.test(email);
}
如何让它匹配许多电子邮件地址并返回给我每封单独的电子邮件?
我不想在返回角色上拆分,我不能总是保证该角色会拆分列表。这些电子邮件是从用户剪贴板粘贴的。如果这么简单,我就不会问;)<</p>
它以字符串形式出现,末尾有一个返回字符 每行。
然后只是在换行符上拆分字符串?
var email_array = str.split("'n");
这是一个非常简单的方法。
/([^;:<>!?'n]+'@[^;:<>!?'n]+'.[^;:<>!?'n]+)/gmi
解释:
[^;:<>!?'n]
匹配除这些字符之外的所有内容。 因此,[^;:<>!?'n]+
只是意味着根据需要多次匹配除这些之外的所有内容。
然后匹配@
符号。
然后根据需要匹配尽可能多的不是这些([^;:<>!?'n]
)。
然后匹配文字点 (.)。
然后不要再次匹配这些([^;:<>!?'n]
)。
末尾的gmi
称为标志。 它们的意思是:
-
g
的意思是全球性的。 一遍又一遍地匹配这个正则表达式。 -
m
表示多行。 不要停留在电子邮件第一行的末尾。 -
i
意味着麻木不仁。 不用担心大写和小写。
演示在这里: https://regex101.com/r/aC5cK2/1
所以我
重新工作答案以合并@adeneo所说的:
$scope.pasteThis = function(e) {
var emails = e.clipboardData.getData('text/plain');
var emailArray = emails.split(/('n|'s|,)/);
angular.forEach(emailArray, function (e) {
var EMAIL_REGEXP = /^[a-z0-9!#$%&'*+'/=?^_`{|}~.-]+@[a-z0-9]([a-z0-9-]*[a-z0-9])?('.[a-z0-9]([a-z0-9-]*[a-z0-9])?)*$/i;
if (EMAIL_REGEXP.test(e)) {
if (!contains($scope.emailAddresses, e)) {
$scope.emailAddresses.push(e);
}
}
});
}
function contains(arr, el) {
var found = false;
angular.forEach(arr, function(e) {
if (e == el) {
found = true;
}
});
return found;
}
所以EMAIL_REGEXP
来自 Angular 源代码。我在其他地方使用它,所以在这里使用它非常合适(一致性)。
此功能可确保在拆分电子邮件后,每个电子邮件都是有效的电子邮件地址。这意味着没有混乱可以通过。
相关文章:
- 通过跳过拆分字符在 javascript 中拆分字符串
- jQuery字符串使用split()方法在空格后拆分字符串
- Javascript-正则表达式,用于在未转义字符上拆分字符串,例如|,但忽略|
- 如何在JavaScript中按大小写拆分字符串
- 根据上次出现的、和_拆分字符串
- 拆分字符串数组(JavaScript)后未定义
- 在空行上拆分字符串
- 使用Regex拆分字符串,保留分隔符
- 使用jquery或regex,带点但不带点的拆分字符串位于单引号中
- Nashorn和Rhino:使用空白regexp拆分字符串
- Javascript:不使用.split()方法拆分字符串
- 如何使用正则表达式在javascript中拆分字符串
- Javascript在第一个空格上拆分字符串
- 首次出现时拆分字符串
- 如何使用正则表达式(.match())拆分字符串
- 使用正则表达式拆分字符串
- Javascript:拆分字符串,但仅使用 1 个结果
- Angularjs-拆分字符串问题
- angularjs在拆分字符串时解析语法错误
- 基于javascript中的AND OR逻辑拆分字符串