2014-12-25 63 views
0

我試圖編寫一個正則表達式來選擇任何字符(字母,符號或數字)之前或之後的空格,但不包含由字符組成的單詞之間的空格。字符,符號或數字之前或之後的空格;但不介於

例如,在' abc'之前的空格將匹配;但是,在'words words words'中不會選擇中間的空格。

因此在' hello world to everyone '中,只會選擇前導和尾隨空白。

獎勵:如果有辦法分開,在第二個正則表達式中,選擇中間的空白,這將有助於很多。

我想要做的是,在JavaScript中,儘量減少在句子中的空白,以便領先和尾隨的空白消失,白色空間之間的單詞收縮到1空間。

+0

但''hello world to everyone''沒有前/後空格? – anubhava

+0

我添加了一些引號以防止空白崩潰。 – Eris

+0

'String#trim()'應該已經這樣做了 – anubhava

回答

3

Reference Link

var string = " hello world  to  everyone. "; 
string = string.trim().replace(/\s+/g, " "); 
alert(string); 

JS Fiddle

+1

謝謝你解決我的問題,而不僅僅是給我最簡單的解決方案。我不知道有一個修剪方法。我會進一步研究。 – wordSmith

+0

很高興爲您效勞。 – Sadikhasan

2

你想讓多的空間,一個空間?只要做到:

var text="hello world to everyone"; 
text=text.trim().replace(/\s+/g," "); 

document.write(text); // It will print 'hello world everyone' 
+1

它打印'helloworldeveryone' – Sadikhasan

+1

重置價值應該是一個單一的空間,我爲你解決它。 – Eris

+0

對不起xD ...哦,謝謝編輯 –

0

通過正則表達式和正則表達式只

你可以不使用任何JS喜歡trim()

> var s = ' hello world to everyone ' 
> s.replace(/^\s+|\s+$|\s*(\s)/g, "$1") 
'hello world to everyone' 

DEMO

解釋內置的功能,通過正則表達式做到這一點:

  • ^\s+匹配領先的一個或多個空格。
  • |
  • \s+$匹配尾部空格。
  • |
  • \s*(\s)從剩餘的字符串中,這個正則表達式匹配零個或多個空格並捕獲最後一個空格。所以被捕獲的組即是,組索引1單個空間。
  • 使用組索引1內存在的空間替換所有匹配的空格將爲您提供所需的輸出。
+0

或'^ \ s + | \ s + $ | \ s +(\ s)' –

+0

我發現其他答案更具可讀性,特別是如果我考慮可維護性。 – Eris

相關問題