我正在使用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/