2012-06-11 77 views
0

我有一个编辑器,它可以粘贴一个视频网址,我通过正则表达式将其转换为嵌入代码。正确结束正则表达式

在所见即所得的编辑器的网址是: http://emedia.is.ed.ac.uk:8080/JW/wsconfig.xml&file=mp4:directory/date_submitted/filename-stream-WSwifi.m4v

输出的HTML是:

<p>http://emedia.is.ed.ac.uk:8080/JW/wsconfig.xml&amp;file=mp4:directory/date_submitted/filename-stream-WSwifi.m4v</p> 

寻找这个我在JavaScript中使用下面的正则表达式:

/http:\/\/(www.)?emedia.is.ed.ac.uk:8080\/JW\/?(.*)?/ 

但由于某些原因,比赛包含</p>以及matchgroup 2?我怎样才能避免这种情况?

回答

1

试试这个

http:\/\/(www\.)?emedia\.is\.ed\.ac\.uk:8080\/JW\/?([^<]*) 

看到它here on Regexr

而不是匹配任何字符与.*我使用[^<]*,意思是匹配除“<”以外的任何内容。

我最后也删除了?,因为使用*量词你不需要它,所以我也逃过了所有你想要的字面匹配。

0

在这种特定情况下,您可以将最后的.更改为[^<\s]

/http:\/\/(www\.)?emedia\.is\.ed\.ac\.uk:8080\/JW\/?([^<\s]*)/ 

这样匹配将停止在第一个<或空间。

0

(.*)? 

在最后吃掉你的p标签。我想正则表达式改写为

http:\/\/(www.)?emedia.is.ed.ac.uk:8080\/JW\/?([^<]*) 

现在第2组是干净