我只想
在任意两个单词之间最多允许 10 个单词并删除剩余的
. 如何使用正则表达式在 JavaScript 中执行此操作?
问问题
251 次
4 回答
2
str.replace(/\ {11,}/g, " ");
于 2012-12-15T16:35:39.180 回答
0
我会首先创建一个 10 的
变量
for (var spaces = '', i = 0; i < 10; i++) spaces += ' ';
然后我会在下面的正则表达式(p)中使用它作为替换
str = str.replace(/([^\s])?(\s| ){11,}(?=[^\s]|$)/g, '$1'+spaces)
以下是模式的细分:
([^\s])? # 0 or 1 character other than white space
(\s| ){11,} # any white space or 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 回答