我正在使用JavaScript进行文本对齐功能,我想使用一个用于我以前的Ruby对齐功能的正则表达式代码段。

正则表达式如下:

/(?<=\s|\A).{1,#{length}}(?=\s|\z)/

我将此模板用作模板,以从没有换行符的较大字符串中提取指定length变量内的一行文本。正则表达式可确保我捕获此长度内的所有完整单词和必要的空格,并且不会截断任何单词。

我想创建此正则表达式的JavaScript类似物。

我已经尝试过在Ruby和JS之间进行语法的基本替换,如下所示:

^\s|\A.{1,length}\s|\z$

没有成功。任何帮助将不胜感激。

最佳答案

不支持Lookbehind,并且完全正确地删除了它。现在,也不支持锚点\A\z。您将需要使用构造函数符号来声明动态模式,因为变量插值无法像Ruby中那样工作。

使用类似



var length = 5;
var re = RegExp("(?:\\s|^)(.{1," + length + "})(?=\\s|$)", "g");
var str = 'My cool code on StackOverflow.';
var res = [];
while ((m = re.exec(str)) !== null) {
  res.push(m[1]);            // Your value is in Group 1
}
document.body.innerHTML = "<pre>" + JSON.stringify(res, 0, 4) + "</pre>"; // just demo

关于javascript - 将Ruby正则表达式转换为JavaScript,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34912449/

10-17 03:09