为了账号安全,请及时绑定邮箱和手机立即绑定

捕获期间但不是内部链接

捕获期间但不是内部链接

凤凰求蛊 2021-11-04 16:41:45
我已经在这个很好的网站上搜索了彻底的解决方案和可能导致解决方案的片段,但没有结果。这是我得到的最接近的:(?!(\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,所以我无法访问负面的后视(这看起来很有用,但也许有一天我们会得到它们)。
查看完整描述

2 回答

?
Qyouu

TA贡献1786条经验 获得超11个赞

您应该能够使用积极的前瞻来断言在您的经期之后出现空格或 EOL。

\.(?=\s|$)

在 Regex101 上查看

  • \. 匹配文字句点

  • (?=...)是一个积极的前瞻,它将断言在您的经期之后出现一个空格\s或 EOL $。在 URL 中永远不会出现这种情况,这就是它起作用的原因。

如果你想减少限制,你可以用任何非字母数字字符代替空格替换你的前瞻。这是一个替代方案:

/\.(?=[^a-z0-9]|$)/igm

在 Regex101 上查看


查看完整回答
反对 回复 2021-11-04
?
三国纷争

TA贡献1804条经验 获得超7个赞

您可以使用以下表达式: ([\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);


查看完整回答
反对 回复 2021-11-04
  • 2 回答
  • 0 关注
  • 161 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信