2014-02-20 65 views
0

有一個問題問今天,這引起了我的興趣(隨後被刪除),當用戶希望將以下字符串使用正則表達式分割字符串與正則表達式的數組排除一個字

'The 1. cat 2. sat 3. on 4. the 5. mat'; 
分裂

到該陣列

["cat","sat","on","the","mat"] 

有與此表達

str.match(/[a-z]+/gi); 
012的答案

當然它返回

["The","cat","sat","on","the","mat"] 

我來了來了一個答案最近與

str.match(/[^The][a-z]+/gi); 

返回

[" cat"," sat"," on"," the"," mat"] 

單元測試here

當然這一點可以做到,b怎麼樣?

+0

因此,您期待在數組中的每個字符串之前刪除空格嗎? – Peshal

+0

我期待的是完成問題的方式,回答問題的用戶對自己的問題有自己的看法。我試圖以表面看待它。 –

+0

''[^]'與完全相同:'[^ heT]','[^ eTh]'......以及所有可能的排列組合。 「[^]」並不意味着「不是這個詞」The「,而是」不是這些字母「 –

回答

0
str.match(/\b(?!The\b)[a-z]+\b/gi) 
+0

這不包括'the'http:// www .unittest.it/unittestcase/pfMyg7s/ –

1

如何

的Javascript

var str = 'The 1. cat 2. sat 3. on 4. the 5. mat', 
    arr1 = str.match(/[a-z]+/gi), 
    arr2 = str.match(/\b[a-z]+/g); 

console.log(arr1); 
console.log(arr2); 

輸出

["The", "cat", "sat", "on", "the", "mat"] 
["cat", "sat", "on", "the", "mat"] 

jsFiddle

+0

你是否刪除了數組的第一個元素? –

+0

是的,你不想要第一個字?你是否?如果你這樣做,只要刪除'切片' – Xotic750

+0

是的,假設,但我試圖不連鎖,只使用一個註冊前 –

0

您可以使用此模式:

str.match(/\b[a-z]+\b(?!\s1\.)/gi) 
+0

嗯,似乎無法通過此測試http://www.unittest.it/unittestcase/M91bM1r/ –

+0

@NicholasMurray:您的測試可能是錯誤的。 –

+0

我很好奇怎麼樣?你可以編輯它嗎?它使用QUnit ... –