任何人都可以告诉我这个javascript代码有什么问题
"http://www.imdb.com/title/tt2618986/".match("~http://(?:.*\.|.*)imdb.com/(?:t|T)itle(?:\?|/)(..\d+)~i");
当我在这里尝试https://regex101.com/r/yT7bG4/1时,它可以正常工作,但不能在javascript中使用
答案 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)
在你的情况下:
带有正则表达式的结果代码是:
"http://www.imdb.com/title/tt2618986/".match(/http:\/\/(?:.*\.|.*)imdb.com\/title(?:\?|\/)(..\d+)/i)
P.S。使用修饰符'i'进行不区分大小写的搜索