【问题标题】:JS Regex Positive LookbehindJS 正则表达式正面向后看
【发布时间】:2018-03-07 20:56:29
【问题描述】:

我想用空格分割一个字符串。但如果不删除它,它应该添加到前一个字符串而不是下一个。

正如您在result 中看到的,空格被添加到下一个单词中。

这是我的regex101。

正则表达式:

/(?=\040)/g

结果:

“Lorem| ipsum| dolor| si| amet。”

我需要什么

“Lorem |ipsum |dolor |si |amet.”

【问题讨论】:

  • 为什么要使用神秘的八进制?
  • 答案是ECMAScript 中没有lookbehind 构造。正则表达式。所以,停止试图与分裂战斗。使用查找/查找下一个正则表达式。 \S+\s? 或 [^ ]+[ ]?
  • 类似(\w+(?= |.) ?)?

标签: javascript regex


【解决方案1】:

试试这个正则表达式:

\b(?=\w)

或

\b(?=[^\040.])

Click for Demo

说明:

  • \b - 字边界
  • (?=\w) - 正向前瞻确保单词字符跟随\b

或

  • (?=[^\040.]) - 正向前瞻确保\b 后跟除 或. 之外的任何字符

【讨论】:

  • 唯一相关的字符是空格,\w与它无关。
  • @sln 提供了另一个正则表达式。
  • 这里有一些建议,拆分在你需要后向断言的情况下不起作用......不在 JS 中
【解决方案2】:

你可以使用 split 和 map

var split = 'Lorem ipsum dolor si amet.'.split(' ');
var result = split.map(function(value) {

  return value + (split.indexOf(value) < split.length - 1 ? ' ' : '');

});

console.log(result);

【讨论】:

    猜你喜欢
    • 2021-11-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-30
    • 1970-01-01
    相关资源
    最近更新 更多