【问题标题】:Using JavaScript and Regex to extract 1 specific data from URL使用 JavaScript 和 Regex 从 URL 中提取 1 个特定数据
【发布时间】:2016-11-30 23:39:24
【问题描述】:

我想从这样的 URL 获取“test@gmail.com”(或 URL 中的任何电子邮件):

  • www.website.com/?email=test@gmail.com
  • www.website.com/?email=test@gmail.com&name=john
  • www.website.com/?name=john&email=test@gmail.com

我的问题是解决所有这 3 种情况都可能发生(所以没有其他数据,或数据在电子邮件之后,或数据之前电子邮件)。

不幸的是,我的正则表达式技能为零,但能够将这两件事结合在一起:

/email=(.*)/
/email=(.*)\&/

如果电子邮件是唯一的数据,则第一个有效。 仅当我的电子邮件后还有其他数据时,第二个才有效。

但如前所述,无论上述 3 种类型中的哪种情况,我都需要使其工作。

你能帮帮我吗?

非常感谢!

顺便说一句,我需要它:

var msg = window.location.href.match(/email=(.*)/);

(我正在寻找超过 2 小时的答案,使用了 Google,使用了 Regex-Testers,查看了 Cheat Sheets 并阅读了许多 StackOverFlow-Questions...但我无法自己解决。)

【问题讨论】:

标签: javascript regex


【解决方案1】:

试试这个正则表达式:https://regex101.com/r/gMyqDa/1 它匹配电子邮件模式,而不仅仅是email=之后的任何字符

【讨论】:

  • 谢谢,但这已被删除(我想我已删除它,因为我现在看到你给了我一个删除链接...:))
  • 那太尴尬了!固定的。 :)
  • 太好了,非常感谢 yBot!我在我的网站中实现了这个,它运行良好:) 这比我的尝试更容易
【解决方案2】:

如果您的情况如此简单,那么只需排除 & 符号

var urls = [
"www.website.com/?email=test@gmail.com",
"www.website.com/?email=test@gmail.com&name=john",
"www.website.com/?name=john&email=test@gmail.com"
];

for (i in urls) {
  var url = urls[i];
  console.log(url);
  console.log(url.match(/email=[^&]+/)[0]);
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-02-21
    • 1970-01-01
    • 2013-06-19
    • 2019-03-02
    • 1970-01-01
    • 1970-01-01
    • 2021-09-20
    相关资源
    最近更新 更多