2010-11-08 111 views
1

這是什麼意思?這是什麼javascript正則表達式?

name = name. replace(/([A-Z]) /g, " -$1"); 

它是js。

修正我的意思name = name.replace(/([A-Z]) /g, "-$1");

+0

什麼語言是這個嗎? – FrustratedWithFormsDesigner 2010-11-08 16:00:12

+1

是JavaScript嗎?正則表達式的格式可能會有所不同,具體取決於您所使用的編程語言。 – zzzzBov 2010-11-08 16:02:17

回答

2

這意味着:

以字符串「名稱」,並查找每個大寫字母后面有一個空格。當您發現一個事件時,請用連字符替換它,然後替換爲字母。一旦你完成了所有的事件,把這個新的字符串分配回「name」變量。

例如,如果「name」是AB CD之前執行這條線,「名稱」,將執行該行之後是A-BCD

+0

我很確定/ g表示它只是在字符串的末尾,不是?我在javascript中測試了這個真正的快速並且:「你好我的朋友」被替換爲「你好我的朋友」。 – Gazillion 2010-11-08 16:03:48

+0

@Matt:它查找每個大寫字母后跟一個空格,並且空格被刪除。 – RoToRa 2010-11-08 16:07:48

+0

Javascript可能無法識別/ g標誌。如果它像Perl一樣,那麼/ g意味着全局。 – 2010-11-08 16:08:02

1

非常簡要地說,該裝置[A-Z]匹配任何大寫字母,則/g位手段做到這一點全局(整個輸入字符串),並且-$1位意味着替換每個匹配組與X-X$1引用第一個參數括號中的位。

所以,如果輸入是「HE LLO」,你會得到「H-E LLO」。如果輸入是「He LL o」,你應該得到「He L-L o」。

我建議你閱讀正則表達式,因爲它們可能非常複雜。

+0

你是什麼意思? $ 1引用第一個參數中的括號中的位。 – steve 2010-11-08 16:08:09

+0

'$ 1'就是所謂的「反向引用」。每對括號定義了一個後向引用,後面可以用'$ n'語法來引用。第一個反向引用是$ 1,第二個是$ 2,等等。所以表達式的「替換」部分指的是正則表達式中的第一個反向引用。 – 2010-11-08 16:11:02

0

(A-Z)之後是空格。所以它只能匹配大寫字母后跟一個空格。這些被替換爲「 - 」和原始字符(反向引用)。因此,對於字符串「你好我的朋友」,結果將是HELL -OM -YFriends/g意味着全球,所以更換所有的出現。

試圖在perl的:

$var = "HELLO MY Friends"; 
$var =´ s/([A-Z])/-$1/g; 
print $var . "\n";