2012-12-15 82 views
3

我想只允許任何兩個字之間最多隻有10  並刪除剩下的 。我怎樣才能用JavaScript與正則表達式?刪除 如果有超過10個

+0

也許最簡單的是刪除所有的空格,如果有超過10個,然後添加10 – daniel

+0

如果我們認爲你只需要2個空格「這是我最喜歡的世界之一」這個前面的引語是否證明了你想要的東西? – SaidbakR

+0

對不起,您是否希望匹配''和' '或者您只是使用' '來避免混淆(!)? – ultranaut

回答

2
str.replace(/\ {11,}/g, "   "); 
+1

'str.replace(/({10})+/g,'$ 1')'但這既不是' '也不是ckeditor。 – melpomene

0

或者:

str.replace(/(\ {10})\ */g, "$1") 
0

您不必使用正則表達式這一要求。我們將使用JavaScript字符串對象的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/

0

我會首先創建一個變量,10 &nbsp;

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字符邊界。