正则表达式匹配单个特殊字符或特定序列

时间:2009-06-20 22:54:09

标签: javascript regex

不确定我是否正确行事:

/(https?:\/\/\S+)(\s|(& nbsp;))?/g;

这应匹配以http(s)://开头并以空格字符或&开头的URL。 NBSP;

问题在于这一部分:

(\s|(& nbsp;))?

这应该意味着:匹配一个空格或一个& NBSP;但它不起作用。它永远不会匹配& NBSP;并继续直到它找到一个空白区域。

我不是在寻找任何其他的http regexp,我不是在寻找一个javascript库解决方案,我对此很满意,我只想弄清楚最后一部分。

编辑:此网站上的代码格式中存在某种错误,&之间没有空格。并且但如果我摆脱那个分隔空间,这个网站会把它变成一个空间。

1 个答案:

答案 0 :(得分:6)

\S+位是贪婪的,并且会匹配尽可能多的非空格字符,包括可能存在的任何 。将它更改为不同意的等效\S+?,你可能会有更好的运气:

/(https?:\/\/\S+?)(\s| |$)/g;

(已更新,因为我忽略了尾随?。)