3

 任意の 2 つの単語の間に最大 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

この要件のために正規表現を使用する必要はありません。次のように、単純な関数で 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 に答える
0

または:

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