2012-07-16 103 views
1

在JavaScript中,我將如何從"John Smith - Jane Doe"獲得['John Smith', 'Jane Doe'],其中-可以是任何分隔符(\/, + * : ;)等等,使用正則表達式?
使用new RegExp('[a-zA-Z]+[^\/|\-|\*|\+]', 'g')只會給我["John ", "Smith ", "Jane ", "Doe"]正則表達式 - 匹配字組

+0

你總是會有兩個詞? – 2012-07-16 09:24:19

+0

如果你打算投票,那麼請留下評論,爲什麼你這樣做 – 2012-07-16 09:24:48

+0

這是問題,它可能不限於兩個字 – 2012-07-16 09:25:09

回答

2

試試這個,沒有正則表達式:

var arr = str.split(' - ') 

編輯

多重分隔符:

var arr = str.split(/ [-*+,] /) 
+1

什麼是否定性?這工作,不需要正則表達式。 – elclanrs 2012-07-16 09:32:10

+0

不是我的dv,但是OP特別說*「......其中'-'可以是任何分隔符(''''/'',''+''*'':'';')等等。 ..「*,所以這不是一個有用的答案。 – 2012-07-16 09:32:42

+0

''可以替換爲任何東西。 – elclanrs 2012-07-16 09:33:10

1

如果你想匹配多個單詞,你需要在你的字符類的空間。我認爲像/[ a-zA-Z]+/g將是一個起點,通過exec或通過String#match重複使用,如下所示:Live copy | source

var str = "John Smith - Jane Doe"; 
var index; 
var matches = str.match(/[ a-zA-Z]+/g); 
if (matches) { 
    display("Found " + matches.length + ":"); 
    for (index = 0; index < matches.length; ++index) { 
    display("[" + index + "]: " + matches[index]); 
    } 
} 
else { 
    display("No matches found"); 
} 

但它非常有限,龐大的名稱數量比AZ,你可能會想反轉的邏輯和使用否定的類(/[^...]/g,其中...是可能的分隔符列表其他字符)。你不想離開「伊麗莎白·佩尼亞」或「傑拉德·豪夫特」出來! :-)