我有一个字符串,它突出显示了带有^符号的部分:

const inputValue = 'jhon duo ^has a car^ right ^we know^ that';

现在如何返回一个根据单词和^个高亮显示拆分的数组,这样我们就可以返回以下数组:

['jhon','duo', 'has a car', 'right', 'we know', 'that']

const input = inputValue.split('^');来拆分^,用const input = inputValue.split(' ');来拆分单词是行不通的,我认为我们需要一个更好的 idea .

你会怎么做?

推荐答案

您可以在正则表达式中使用match:

const inputValue = 'jhon duo ^has a car^ right ^we know^ that';
const result = Array.from(inputValue.matchAll(/\^(.*?)\^|([^^\s]+)/g),
                          ([, a, b]) => a || b);
console.log(result);

  • \^(.*?)\^将匹配文字^和直到下一个^(包括它)的所有字符,并且内部部分被捕获在捕获组中
  • ([^^\s]+)将匹配第二个捕获组中不是^(单词)的一系列非空格字符
  • 如果设置为|,则上述两种模式可供 Select :如果第一种模式不匹配,则try 第二种模式.
  • Array.from回调将只提取捕获组中出现的内容,因此不包括^个字符.

Javascript相关问答推荐

未捕获错误:[]:getActivePinia()被调用,但没有活动Pinia.🍍""在调用app.use(pinia)之前,您是否try 使用store ?""

可更改语言的搜索栏

如何在ASP.NET项目中使用Google Chart API JavaScript将二次轴线值格式化为百分比

查询参数未在我的Next.js应用路由接口中定义

如何在箭头函数中引入or子句?

Jest toHaveBeenNthCalledWith返回当前设置的变量值,而不是调用时的值

当代码另有说明时,随机放置的圆圈有时会从画布上消失

expo 联系人:如果联系人的状态被拒绝,则请求访问联系人的权限

如何使用puppeteer操作所有选项

Angel Auth Guard-用户只有在未登录时才能访问登录页面,只有在登录时才能访问其他页面

我在哪里添加过滤器值到这个函数?

如何将字符串拆分成单词并跟踪每个单词的索引(在原始字符串中)?

为什么当雪碧的S在另一个函数中时,Phaser不能加载它?

不允许在对象文本中注释掉的属性

2.0.0-dev quill拖动文本不起作用如何使其拖动文本

如何在Angular中分离桌面和移动页面并延迟加载每个页面?

在继续循环之前,请等待带有异步调用的函数完成

Reaction-跨多个组件共享一个功能

导出JSON数据库以在JavaScript中使用

文本动画在其消失之前