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

Bjo*_*orn 2 javascript regex

不确定我是否正确行事:

/(https?:\/\/\S+)(\s|(& nbsp;))?/g;
Run Code Online (Sandbox Code Playgroud)

这应匹配以http(s)://开头并以空格字符或 结尾的网址.

所以问题在于这一部分:

(\s|(& nbsp;))?
Run Code Online (Sandbox Code Playgroud)

这应该意味着:匹配一个空格或者一个  但它不起作用.它绝不匹配  并继续直到它找到一个空白区域.

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

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

mol*_*olf 6

这个\S+位是贪婪的,并且将匹配尽可能多的非空格字符,包括 可能存在的任何空格字符.将它更改为不合适的等价物\S+?,你可能会有更好的运气:

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

(更新是因为我忽略了尾随?.)