用于在 JavaScript 中的空白处换行单行长文本的正则表达式
Regular Expression for wrapping single lines of long text at whitespace in JavaScript
情况是这样的:
我有一个段落文本,假设有 500 个字符。现在,我尝试将 span-Tags 中的每 100 个字符换行为 5 个跨度,每个跨度为 100 个字符。我目前正在使用 JavaScript:
中的以下正则表达式执行此操作
var target = "< 500 characters of example text here >"
var regex = new RegExp(".{1,100}", "g");
var replacement = target.replace(regex, function replace(match) {
return '<span>' + match + '</span>';
});
工作正常,但问题是该函数不关心是否有空格,甚至在单词内部也断行。因此,我尝试通过添加正向后视检查是否有空格来重写正则表达式:
var regex = new RegExp(".{1,100}(?<=\s)", "g");
它正在与在线正则表达式测试器/调试器一起工作,但我的浏览器提示存在语法错误 "invalid regexp group"。我搜索了一会儿,发现 JavaScript 可能不支持积极的回顾。我又重写了代码,结果是这样的:
var regex = new RegExp(".{1,100}(?=\s)", "g");
同样,它只适用于在线正则表达式测试器,不适用于我的项目。
我不是专业人士,不能说我完全理解正则表达式。也许这不是解决我问题的最佳方法。但我希望有人能帮我解决他的 JavaScript 或 jQuery 问题。
最好的,
克里斯蒂安
我想对您的正则表达式的最新版本提出一些改进建议。
从\s*
开始正则,一会就明白了
将.{1,100}
作为一个capturng组(用括号括起来)。
这样,由于第 1 点的更正,您只能复制这组,
"continuation" 行中没有初始 "white" 个字符。
为了正确地提供最后一个块,可能 没有 任何尾随 space,
将前瞻写为替代方案:一系列 "white" 个字符
或文本结尾。
所以整个正则表达式可以是:
\s*(.{1,100})(?=\s+|$)
当然,正如 Pointy 评论的那样,反斜杠加倍。
情况是这样的: 我有一个段落文本,假设有 500 个字符。现在,我尝试将 span-Tags 中的每 100 个字符换行为 5 个跨度,每个跨度为 100 个字符。我目前正在使用 JavaScript:
中的以下正则表达式执行此操作var target = "< 500 characters of example text here >"
var regex = new RegExp(".{1,100}", "g");
var replacement = target.replace(regex, function replace(match) {
return '<span>' + match + '</span>';
});
工作正常,但问题是该函数不关心是否有空格,甚至在单词内部也断行。因此,我尝试通过添加正向后视检查是否有空格来重写正则表达式:
var regex = new RegExp(".{1,100}(?<=\s)", "g");
它正在与在线正则表达式测试器/调试器一起工作,但我的浏览器提示存在语法错误 "invalid regexp group"。我搜索了一会儿,发现 JavaScript 可能不支持积极的回顾。我又重写了代码,结果是这样的:
var regex = new RegExp(".{1,100}(?=\s)", "g");
同样,它只适用于在线正则表达式测试器,不适用于我的项目。 我不是专业人士,不能说我完全理解正则表达式。也许这不是解决我问题的最佳方法。但我希望有人能帮我解决他的 JavaScript 或 jQuery 问题。
最好的, 克里斯蒂安
我想对您的正则表达式的最新版本提出一些改进建议。
从
\s*
开始正则,一会就明白了将
.{1,100}
作为一个capturng组(用括号括起来)。 这样,由于第 1 点的更正,您只能复制这组, "continuation" 行中没有初始 "white" 个字符。为了正确地提供最后一个块,可能 没有 任何尾随 space, 将前瞻写为替代方案:一系列 "white" 个字符 或文本结尾。
所以整个正则表达式可以是:
\s*(.{1,100})(?=\s+|$)
当然,正如 Pointy 评论的那样,反斜杠加倍。