gpt4 book ai didi

javascript - 正则表达式,指定循环次数

转载 作者:行者123 更新时间:2023-11-28 08:35:36 25 4
gpt4 key购买 nike

此正则表达式查找包含 3 个或更少字符的单词,以便可以在它们之前放置一个不间断的空格。

smallwords = /(\s|^)(([a-zA-Z-_(]{1,2}('|’)*[a-zA-Z-_,;]{0,1}?\s)+)/gi, // words with 3 or less characters

有没有办法让表达式只适用于连续的 2 个单词?

示例

目前,字符串:

Singapore, the USA and Vietnam.

将变成:

Singapore, the USA and Vietnam.

如果表达式仅应用于连续 2 个单词,则会显示

Singapore, the USA and Vietnam.

这是完整的脚本:

ragadjust = function (s, method) {

if (document.querySelectorAll) {

var eles = document.querySelectorAll(s),
elescount = eles.length,

smallwords = /(\s|^)(([a-zA-Z-_(]{1,2}('|’)*[a-zA-Z-_,;]{0,1}?\s)+)/gi, // words with 3 or less characters

while (elescount-- > 0) {

var ele = eles[elescount],
elehtml = ele.innerHTML;

if (method == 'small-words' || method == 'all')

// replace small words
elehtml = elehtml.replace(smallwords, function(contents, p1, p2) {
return p1 + p2.replace(/\s/g, ' ');
});


ele.innerHTML = elehtml;

}
}
};

这是来自 RagAdjust

最佳答案

我知道这不是您所要求的,但我认为代码审查不会有什么坏处:

  • 我认为在这种情况下,单词边界 \b\s|^ 更好。
  • 您的匹配项中有 A-Za-z 字符,但您使用的是 i 不区分大小写的运算符。
  • {0,1}? 是多余的 - 可以使用 ? 将其设为可选,或使用 {0,1} 将其设为可选使其匹配零次或一次。
  • 如果您的字符集中需要有破折号,请将其放在末尾,这样就不会出现不明确的正则表达式,例如这个 [a-z_-] 会更好比[a-z-_]
  • 如果不需要捕获值,请使用非捕获括号(?:)

所以,这是清理后的正则表达式:

/\b((?:[a-z_(-]{1,2}(?:'|')*[a-z_,;-]?\s)+)/gi

我很确定当您从编辑器粘贴此内容时,'|' 位是某种拼写错误。不确定它应该是什么。

关于javascript - 正则表达式,指定循环次数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21249498/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com