2011-04-07 60 views
0

如何找到連字符與正則表達式之間的所有內容?下面 陣列答案應該是[「AAA」,「BBB」,「CCC」,「DDD」]匹配連字符和重疊之間的所有內容?

<script> 
myRe= new RegExp ("xxxxxx"); 
myArray = myRe.exec("-aaa-bbb-ccc-ddd-"); 
</script> 

而且......如果有逗號的字符串中會發生什麼,他們需要包括在數組中?

這是下面好嗎...?

["a,a,a","bbb","ccc","ddd"] 

回答

3

一個快速和簡單的解決方案是尋找單詞字符的字符串:

"-aaa-bbb-ccc-ddd-".match(/[\w]+/g) 

這將返回["aaa", "bbb", "ccc", "ddd"]

如果您需要在其中配合逗號的字符串以及再您可以向捕獲組添加逗號:

// added ',' to [\w,] 
"-a,a,a-bbb-ccc-ddd-".match(/[\w,]+/g) 

Thi都要返回["a,a,a", "bbb", "ccc", "ddd"]

該解決方案將無法很好地擴展,如果你正在尋找什麼一些「-'s之間進行匹配,但如果你有一個簡單的使用情況,那麼我會說使用簡單像上面演示的那樣匹配。

更新

因爲您的評論表示您需要匹配之間的任何東西「-'s,你可以使用下面的正則表達式:

/[^\-]+/g 

這將匹配任何不是」 - 「以羣分,所以:

"-a,@$#$a,a-bbb-ccc-ddd-".match(/[^\-]+/g) 

將返回["a,@$#$a,a", "bbb", "ccc", "ddd"]

+0

是的......我需要之間的一切。我認爲拆分可能會奏效,但我不認爲它會創建一個數組? – gravityboy 2011-04-07 20:22:11

+0

我更新了我的答案。 Split會創建一個數組,但它不起作用,因爲它會爲您提供與您的測試用例的開頭和結尾相匹配的空字符串。 – McStretch 2011-04-07 20:31:15

+0

嗯......它工作,但只匹配它發現的第一個,不重複 – gravityboy 2011-04-07 22:32:40

相關問題