【问题标题】:Javascript regular expression [closed]Javascript正则表达式[关闭]
【发布时间】:2013-05-30 12:30:25
【问题描述】:

我需要从这样的 url 中获取 id:Id 是正整数。 我尝试用正则表达式做到这一点:

url = 'http://127.0.0.1:8000/api/v1/customer/3/'
url.match('///d/')

但是这种模式行不通。 请帮我。

【问题讨论】:

  • \d 是一个数字,而不是 /d
  • @WalterTross 我知道这似乎是 RTFM,但我看到你也没有阅读它,因为你的回答也是错误的
  • @Denis:Wooble 所说的绝对正确,\d 匹配任何数字。另一方面,您的回答非常粗鲁。
  • 小心我不会和 Wooble 争论。

标签: javascript regex


【解决方案1】:

假设你总是想要字符串末尾的最后一个数字,我会这样做:

(\d)(?:\/)$

here

或者,如果您想将尾随 / 设为可选,您可以这样做:

(\d)(?:\/)?$

here

【讨论】:

  • 所有这些员工都返回 null 它只是不起作用
  • @Denis:在英语中我们说“谢谢”。但它确实有效。您的问题是,正如上面 Friederike S 指出的那样,您一直将正则表达式文字视为字符串。他们不是。它们不需要(也不应该)用引号括起来。你需要url.match(/(\d)(?:\/)$/)
  • 好的,我知道你解决的错误也很好用,我被 javascript 弄糊涂了,它是如何传递给函数的,我什至不知道这是怎么被调用的......没有引号的纯文本.
  • @Denis:好的,没关系。它可能看起来像纯文本,但事实并非如此。正如将某些字符括在引号中使其成为字符串一样,将其括在 / 之间使其成为正则表达式文字。这是new RegExp("abc") 语法的快捷方式,避免了new RegEx 语法带来的大量转义。请参阅here 了解更多信息。
  • 谢谢,我会仔细阅读这篇文章的。
【解决方案2】:

似乎这样就足够了:

var url = 'http://127.0.0.1:8000/api/v1/customer/3/';
var id;
url = url.split('/');
for (var x = 0; x < url.length; x++) {
    if (url[x] === 'customer') {
        id = parseInt(url[x + 1], 10);
        break;
    }
}

【讨论】:

  • 看起来很奇怪,我需要更实用的正则表达式解决
  • @Denis:这有什么奇怪的?在我看来是直截了当的。
  • 我只需要两个斜线之间的正整数
  • @Denis 这会将 id 作为字符串返回。如果您希望它是一个数字,请执行 parseInt(url[x + 1])
  • @Denis 如果您不喜欢它,请不要使用它。这很简单,如果您愿意,它允许您查看 url 中的其余标记。
【解决方案3】:

此正则表达式获取网址末尾的数字:/3/ -> 3

/\/([0-9]+)\/$/

【讨论】:

  • url = '127.0.0.1:8000/api/v1/customer/3'; url.match('/\/([0-9]+)\/$/');返回空
  • @Denis:你误会了。开头和结尾的 / 用于在代码中放置文字正则表达式。你不要把它放在引号中。 url = '127.0.0.1:8000/api/v1/customer/3/'; url.match(/\/([0-9]+)\/$/); 返回["/3/", "3"]
  • 许多 thx,lal,我开始发疯了,因为我所有的正则表达式都不想工作 ))) javascript ...
猜你喜欢
  • 1970-01-01
  • 2012-10-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-05-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多