0

我想获取一个电子邮件地址并将其转换为有效的 DOM id,以便它可以用于使用 jQuery 动态构建 HTML 元素。

例如:

  • 鉴于:some.user@example.com
  • 回报:some-user-at-example-com
  • 为了:$('<div />').attr('id, 'some-user-at-example-com');

有点像 Rails 的参数化方法。什么是干净,简单的方法来做到这一点?

4

2 回答 2

2

如果你想要那个输入的输出,你可以使用一个或三个正则表达式:

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

首先,我们将 at 符号替换为“at”(带有前导和尾随空格)。然后我们用破折号替换任何非字母数字字符序列。

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

于 2013-04-03T02:39:56.757 回答
1

正则表达式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)
于 2013-04-03T02:40:22.173 回答