我已经在这个很好的网站上搜索了彻底的解决方案和可能导致解决方案的片段,但没有结果。这是我得到的最接近的:(?!(\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|$)
\.
匹配文字句点(?=...)
是一个积极的前瞻,它将断言在您的经期之后出现一个空格\s
或 EOL$
。在 URL 中永远不会出现这种情况,这就是它起作用的原因。
如果你想减少限制,你可以用任何非字母数字字符代替空格替换你的前瞻。这是一个替代方案:
/\.(?=[^a-z0-9]|$)/igm
三国纷争
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);
添加回答
举报
0/150
提交
取消