捕获期间但不是内部链接

我已经在这个很好的网站上搜索了彻底的解决方案和可能导致解决方案的片段,但没有结果。

这是我得到的最接近的:

(?!(\b[\w]+:\/\/.*?))\B\w+\.

在此代码段中Here is some sample text with a URL: http://stackoverflow.com. I would prefer to select periods outside of URLs though.,发生了以下捕获:

  • tackoverflow.

  • om.

  • hough.

我只想要 URL 后面的句点和句子中的最后一个句点。我正在使用 JavaScript,所以我无法访问负面的后视(这看起来很有用,但也许有一天我们会得到它们)。


凤凰求蛊
浏览 162回答 2
2回答

Qyouu

您应该能够使用积极的前瞻来断言在您的经期之后出现空格或 EOL。\.(?=\s|$)在 Regex101 上查看\. 匹配文字句点(?=...)是一个积极的前瞻,它将断言在您的经期之后出现一个空格\s或 EOL $。在 URL 中永远不会出现这种情况,这就是它起作用的原因。如果你想减少限制,你可以用任何非字母数字字符代替空格替换你的前瞻。这是一个替代方案:/\.(?=[^a-z0-9]|$)/igm在 Regex101 上查看

三国纷争

您可以使用以下表达式: ([\w]+:\/\/[^\s]+)([\.](?=\s|$))将 url 减去句点装饰为降价超链接的示例:const expression = /([\w]+:\/\/[^\s]+)([\.](?=\s|$))/g;const input = `http://stackoverflow.com.In this snippet Here is some sample text with a URL: http://stackoverflow.com. I would prefer to select periods outside of URLs though.http://stackoverflow.com`;const output = input.replace(expression, (match, url, period) => `[${url}](${url})${period}`);console.log(output);
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript