在javascript中,如何将电子邮件地址转换为有效的DOM id

In javascript, how can I transform an email address into a valid DOM id?

本文关键字:转换 有效 id DOM 电子邮件地址 javascript      更新时间:2023-09-26

我想把一个电子邮件地址转换成一个有效的DOM id,这样它就可以用来动态地用jQuery构建一个HTML元素。

例如:

  • 给定some.user@example.com
  • 返回:some-user-at-example-com
  • For: $('<div />').attr('id, 'some-user-at-example-com');

有点像Rails的parameterize方法。有什么干净、简单的方法可以做到这一点?

如果您希望该输入的输出完全相同,则可以使用一个或三个正则表达式:

var id = email.replace(/@/g, ' at ').replace(/[^a-z0-9-]+/gi, '-')
              .replace(/^-|-$/g, '');

首先,我们用"at"替换at符号(用空格开头和结尾)。然后用破折号替换任何非字母数字字符序列。

但是,请注意,多个电子邮件地址可以成为相同的ID。例如,john.doe@example.comjohn-doe@example.com都变成john-doe-at-example-com。您不应该使用这些标识符作为id,因为它们不是唯一的。

Regex和replace应该可以,但是你真的应该考虑这种方法是否值得,因为有这么多潜在的有效电子邮件地址。

'some.user@example.com'.replace(/[.@]/g ,'-')

来自维基百科关于"有效的电子邮件地址":

niceandsimple@example.com
very.common@example.com
a.little.lengthy.but.fine@dept.example.com
disposable.style.email.with+symbol@example.com
user@[IPv6:2001:db8:1ff::a0b:dbd0]
"much.more unusual"@example.com
"very.unusual.@.unusual.com"@example.com
"very.(),:;<>[]'".VERY.'"very@'' '"very'".unusual"@strange.example.com
postbox@com (top-level domains are valid hostnames)
admin@mailserver1 (local domain name with no TLD)
!#$%&'*+-/=?^_`{}|~@example.org
"()<>[]:,;@'''"!#$%&'*+-/=?^_`{}| ~.a"@example.org
" "@example.org (space between the quotes)