此代码在Safari 15中不起作用,因此需要另一种方法来解决它,而不需要回头看

const re = /(?<!\\)(?<!-)-/g;
const str = '20-30--40\\---50--60';
console.log(str.split(re));

输出:

['20', '30', '-40\\---50', '-60']

此代码的作用如下: 需要把绳子分成几个部分. 例如.

"10-20" -> ['10', '20']

但只需拆分第一个‘-’,并将所有‘-’保留在值之前,即

"10---20" -> ['10', '--20']

最后,带着\人逃脱应该是可能的:

"10---20--30"  -> ['10', '--20', '-30']
"10---20\--30" -> ['10', '--20\--30']

我不太了解正则表达式,聊天和替代方案帮不了我.

推荐答案

可以分两步完成:首先,用字符串中不存在的字符替换要拆分的-,然后拆分该字符.我在这里用的是\t:

var strings = ["10-20", "10---20", "10---20--30", "10---20\\--30"];

for(str of strings) {
  console.log(str);
  console.log(str.replace(/(\d)-/g, "$1\t").replace(/\\/g, "").split(/\t/));
}

请注意,字符串中需要有\\个字符才能包含\. 它首先替换-,然后删除任何\\,最后拆分.如果您想保留字符串中的\,只需删除.replace(/\\/g, "")即可.

Javascript相关问答推荐

使用JavaScript单击上一个或下一个特定按钮创建卡滑动器以滑动单个卡

如何使用侧边滚动按钮具体滚动每4个格?

使搜索栏更改语言

Angular:动画不启动

如何粗体匹配的字母时输入搜索框使用javascript?

jQuery s data()[storage object]在vanilla JavaScript中?'

Chart.js 4.4.2,当悬停在一个数据点上时,如何在工具提示中拥有多个数据点/标签?

编辑文本无响应.onClick(扩展脚本)

我怎么在JS里连续加2个骰子的和呢?

闭包是将值复制到内存的另一个位置吗?

Vaadin定制组件-保持对javascrip变量的访问

在不删除代码的情况下禁用Java弹出功能WordPress

使用Ace编辑器对子组件实例的native-element 进行Angular 获取时面临的问题

React Refs不与高阶组件(HOC)中的动态生成组件一起工作

递增/递减按钮React.js/Redux

Firefox的绝对定位没有达到预期效果

如何使用fltter_js将对象作为参数传递给javascrip?

JavaScript structuredClone在Chrome/Edge中获得了非法调用,但在NodeJS中没有

响应,Use Callback更新状态变量,该变量也存在于其依赖数组中,它如何防止无限重新呈现?

对象作为react 子对象无效(已找到:具有键的对象{type,props}).如果要呈现一个子级集合,请改用数组