正确结束正则表达式

时间:2012-06-11 12:34:57

标签: javascript jquery regex

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

WYSIWYG编辑器中的网址是: 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>以及匹配组2?我怎么能避免这种情况?

3 个答案:

答案 0 :(得分:1)

试试这个

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

here on Regexr

我没有使用.*匹配任何字符,而是使用[^<]*,而不是匹配“&lt;”之外的任何字符。

我最后删除了?,因为你不需要*量词,我也逃脱了你想要匹配的所有点。

答案 1 :(得分:0)

在这种特定情况下,您可以将上一个.更改为[^<\s]

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

这样,匹配将在第一个<或空格处停止。

答案 2 :(得分:0)

(.*)?

最后吞下你的p标签。我会把正则表达式重写为

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

现在第2组是干净的