2008-12-02 37 views
0

我在AS3/Flex中找到了一個很長的正則表達式,它找到了幾十個單詞之一。 正則表達式如下:word | wordup | wordly | wordster'undefined'匹配AS3 RegExp?是吧?

當我做「wordup wordster!」。match(正則表達式)我得到undefined maches! 所返回的匹配陣列具有 匹配: [0] 'wordup' [1]未定義 數組長度:2

是否有AS3的分組相匹配的已知的錯誤?在返回的匹配數組中可能會顯示某些詞,而其他詞會以undefind的形式返回?

我在我的正則表達式中查找了不正確的字符,並檢查了幾次正則表達式。

如果我只是搜索'wordup',那麼我得到一個匹配數組長度爲1,正確的內容。如果我搜索'wordster',那麼我會得到一個數組長度爲1的匹配項[0],而且這個匹配項沒有再次定義。

------更新-------

經過大量試驗的......我的正則表達式是爲AS3 我的實際正則表達式使用分組實在太長了,並有可選的括號:

(:((\ bword \ b))|((\ bwordup \ b))| ...等51個字

簡化到:????? (? :\ bword \ b | \ bwordup \ b |

以某種方式使比賽組工作得很好,e儘管我沒有任何通常需要定義組的括號......

回答

3

當您處理「神祕」問題時,您應該始終顯示您的實際代碼,而不是您認爲相同的代碼。 word | wordup | wordly | wordster不會給你任何「未定義」的匹配。

而不是使用(?:\ bword \ C | \ bword2 \ B),使用:\ B(:字|單詞2)?\ b

正則表達式字|(字詞)| WORD3會給你零長度的匹配,因爲正則表達式中的第二個選擇是可選的。它將匹配字符串中無法匹配「單詞」的每個位置的零長度字符串。