2010-03-11 27 views
21

我正在學習JavaScript,我正在分析現有代碼。Javascript正則表達式「單個空格字符」

在我的JS參考書,它說在單一空間的使用「\s」搜索?

但我有整個使用\s代碼

obj.match(/Kobe Bryant/); 

而不是來了,它使用的實際空間?

爲什麼這不會產生錯誤?

+0

的MDN RegExp的頁面是JS的正則表達式和處理了'RegExp'對象一個很好的資源:https://developer.mozilla.org/docs/Web/JavaScript /參考/ Global_Objects /正則表達式 – toolbear 2015-01-16 05:48:34

回答

59

的字符類\s並不僅僅包含空格字符,還包括其他Unicode white space characters\s相當於這個人物類:

[\t\n\v\f\r \u00a0\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u200b\u2028\u2029\u3000] 
+2

+1,可能把你超過別人來獲取鏈接:-) – 2010-03-11 22:39:03

+0

這是非常重要的人誰是編碼數據考慮「的一個真實空間字符‘’之間的區別,和'任何空格用戶可能發送給我'。\ s幾乎總是你想要的,但要小心......如果你編碼的是二進制數據,一定要只匹配'空格鍵''\ u0020' – Ajax 2017-12-21 11:46:23

5

號這是完全合法的,包括在一個正則表達式文字空間。

但是,它並不等同 - \s將包括任何空格字符,包括製表符,不間斷空格,半角空格和其他字符,而文字空間只會匹配常規空格字符。

5

\s匹配任何空白字符,包括標籤等,當然您也可以使用文字空間也沒有問題。就像你可以使用[0-9]而不是\d來表示任何數字。

1

除了正常的空格,\s不同種的空白字符,包括凸片相匹配(和可能的換行字符,根據配置)。也就是說,匹配一個正常的空間當然是有效的,特別是在你想要匹配一個名字的情況下,這個名字通常被一個普通的空格隔開。