2013-11-03 79 views
0

我想要一個正則表達式來匹配字符串中每個單詞的第一個字母。無法匹配字符串中每個單詞的第一個字母

我正在使用XRegExp Javascript庫。

其實我試圖複製一個正則表達式我有我的服務器端的C#代碼(貌似工作正常):

new Regex(@"\b[\p{L}]|(?<=[-])[\p{L}]").[omitted code] 

先發小,我已經試過如下:

XRegExp.exec("foo bar", XRegExp("\\b\\p{L}", "g")) 

我期望["f","b"](使用'all matches'標誌(g),但只得到:["f"]

我在做什麼錯?

+0

爲什麼不使用String.split()來代替令牌,然後迭代這些字符串並取value.getChar(0)。這不是更容易,更可維護嗎? –

+0

這聽起來更容易。無論如何,我只需要分割空白和連字符,所以string.Split()應該可以正常工作。謝謝!我仍然想知道爲什麼XRegExp沒有按計劃運行,但是._。 – matsho

回答

0

您沒有收到fb,因爲exec()在每次調用中都會連續發現匹配項。

它通常用於while循環來查找所有匹配項。

如果您使用本地庫,那麼我會建議您使用string.match()一次查找所有匹配項。

在您的情況檢查文檔exec(),然後尋找類似於string.match()的方法。

+0

謝謝! :)我錯過了「每次通話」中的「連續」。我使用XRegExp的原因是我在使用速記字符類(\ d,\ w,\ b等)時需要對Unicode的支持。我相信本地庫[只支持ASCII](http://blog.stevenlevithan.com/archives/javascript-regex-and-unicode)。 – matsho

+0

@matsho您非常歡迎。 –

相關問題