JS正则表达式匹配imdb url

时间:2015-07-25 06:32:26

标签: javascript

任何人都可以告诉我这个javascript代码有什么问题

"http://www.imdb.com/title/tt2618986/".match("~http://(?:.*\.|.*)imdb.com/(?:t|T)itle(?:\?|/)(..\d+)~i");

当我在这里尝试https://regex101.com/r/yT7bG4/1时,它可以正常工作,但不能在javascript中使用

3 个答案:

答案 0 :(得分:0)

在JavaScript中创建正则表达式的方式是/pattern/flags。您正在寻找的代码类似于:

"http://www.imdb.com/title/tt2618986/".match(/http:\/\/(?:.*\.|.*)imdb.com\/(?:t|T)itle(?:\?|\/)(..\d+)/i);

您必须转义正则表达式中的所有/,以便/成为正则表达式的一部分,而不是指示它的结束。如果您想了解有关JavaScript中正则表达式的更多信息,我建议您阅读this article

此外,https://regex101.com/左侧有一个JavaScript选项,位于'FLAVOR'横幅下,这有助于了解哪些标志有效。

答案 1 :(得分:0)

你在regex101中使用pcre(php)风味。你应该选择javascript风味。

认为javascript RegExp中没有'〜'分隔符。这就是您的代码无效的原因。

你应该写一些类似的东西:

"http://www.imdb.com/title/tt2618986/".match(/http:\/\/(?:.*\.|.*)\.imdb.com\/(?:t|T)itle(?:\?|\/)(..\d+)/i);

答案 2 :(得分:0)

在你的情况下:

  • / symbol必须是逃避 - 就像这样/.
  • 没有'〜'分隔符

带有正则表达式的结果代码是:

"http://www.imdb.com/title/tt2618986/".match(/http:\/\/(?:.*\.|.*)imdb.com\/title(?:\?|\/)(..\d+)/i)

P.S。使用修饰符'i'进行不区分大小写的搜索