3

我只想 在任意两个单词之间最多允许 10 个单词并删除剩余的 . 如何使用正则表达式在 JavaScript 中执行此操作?

4

4 回答 4

2
str.replace(/\ {11,}/g, "          ");
于 2012-12-15T16:35:39.180 回答
0

我会首先创建一个 10 的 变量

for (var spaces = '', i = 0; i < 10; i++) spaces += '&nbsp;';

然后我会在下面的正则表达式(p)中使用它作为替换

str = str.replace(/([^\s])?(\s|&nbsp;){11,}(?=[^\s]|$)/g, '$1'+spaces)

以下是模式的细分:

([^\s])?          # 0 or 1 character other than white space
(\s|&nbsp;){11,}  # any white space or &nbsp; used more than 10
(?=[^\s]|$)       # followed by a character other than a white space
                  # or it is the end of string

编辑:我替换了模式中的单词边界字符 ( \b),因为它与 unicode 字符边界不匹配。

于 2012-12-15T17:45:28.180 回答
0

或者:

str.replace(/(\ {10})\ */g, "$1")
于 2012-12-15T16:46:40.650 回答
0

您不必为此要求使用正则表达式。我们将在一个简单的函数中使用 JavaScript String 对象的split方法,如下所示:

function firstTen(txt){
arr = txt.split(" ");
out = '';
for (i = 0; i < arr.length; i++){
if (i < 10){
out += arr[i]+" ";
}
else{
out += arr[i];
}
}
    return out;
}
txt = "1 2 3 4 5 6 7 8 9 10 Apple Egypt Africa"
    alert(firstTen(txt));​

以下是一个演示:http: //jsfiddle.net/saidbakr/KMQAV/

于 2012-12-15T17:01:59.193 回答