我在和弦打交道.该字符串通常包含以下内容:

"站点https://example.com包含您需要的所有信息."

到目前为止,我有这个正则表达式,它在https时拆分字符串?找到了

const rgx_link = /(?=https?:\/\/)/gi;

因此,在本例中,它会将字符串拆分为:

arr = ["The site ", "https://example.com contains all the information you need"];

我想修改正则表达式,这样如果在url之后发现一个空格,它也会拆分字符串.

所需结果如下所示:

arr = ["The site ", "https://example.com", " contains all the information you need"];

新的正则表达式"应该"看起来像这样的((?=https?:\/\/)(\s)),但它不起作用.

任何帮助都将不胜感激.谢谢.

const text = "The site https://example.com contains all the information you need";
const rgx_link = /(?=https?:\/\/)/gi;
const result = text.split(rgx_link);
console.log(result)

编辑1:Wiktors的建议是正确的.我没有注意到正则表达式的前导部分被更改,所以它不起作用.

const text = "The site https://example.com contains all the information you need";
const rgx_link = /(https?:\/\/\S*)/gi;
const result = text.split(rgx_link);
console.log(result)

推荐答案

您可以使用

text.split(/(https?:\/\/\S*)/i)

请注意,当正则表达式包含捕获组时,String#split方法输出所有捕获的子字符串,因此这个完全由捕获组包装的正则表达式基本上将字符串tokenizes转换为URL和非URL标记.

请注意,没有g标志,因为String#split行为在默认情况下是在所有出现的正则表达式模式上拆分.

Pattern details

  • http-http字符串
  • s?-可选s个字符
  • :\/\/-://子字符串
  • \S*-零个或更多非空格字符.

Javascript相关问答推荐

布局样式在刷新时不持续

禁用从vue.js 2中的循环创建的表的最后td的按钮

通过使用100%间隔时间来代表我们还剩多少时间来倒计时

过滤对象数组并动态将属性放入新数组

Javascript,部分重排序数组

如何从Intl.DateTimeFormat中仅获取时区名称?

保持物品顺序的可变大小物品分配到平衡组的算法

对网格项目进行垂直排序不起作用

TypeError:无法分解';React2.useContext(...)';的属性';basename';,因为它为空

同一类的所有div';S的模式窗口

在SHINY R中的嵌套模块中,不能使用Java代码

使用Document.Evaluate() Select 一个包含撇号的HTML元素

JS Animate()方法未按预期工作

WebSocketException:远程方在未完成关闭握手的情况下关闭了WebSocket连接.&#三十九岁;

当从其他文件创建类实例时,为什么工作线程不工作?

是否可以将异步调用与useState(UnctionName)一起使用

如何在TransformControls模式下只保留箭头进行翻译?

Chrome上的印度时区名S有问题吗?

需要从对象生成列表

与find()方法一起使用时,Mongoose中的$or运算符没有提供所有必需的数据