任意の 2 つの単語の間に最大 10 のみを許可し、残りを削除したいと考えてい
ます。JavaScriptで正規表現を使用してこれを行うにはどうすればよいですか?
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
この要件のために正規表現を使用する必要はありません。次のように、単純な関数で 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 に答える