2015-03-19 158 views
1

我有一個網址,這些可能的文件夾名稱:返回true

firstname+lastname 
firstname-lastname 
firstname lastname 
Firstname+Lastname 

我需要一種方法來捕捉這些,常見的元素將名字和姓氏(所以我不不關心+或空間),但我確實需要將它們轉換爲toLowerCase();

這可以用正則表達式來完成嗎? (我在使用正則表達式時並不特別複雜,我可以使用基本的match()函數。

我的另一個想法是將這些變體存儲在一個數組中,並且如果任何項目匹配其中一個數組項。

我一直在尋找這樣的解決方案:http://snook.ca/archives/javascript/testing_for_a_v

在這種情況下,雖然我認爲我的數組和聲明將是這個樣子:

var strArray = ['firstname','lastname']; 
strArray.toLowerCase(); 
var href = document.location.href; 
var secondaryDir = href.split("/")[4]; 

if (secondaryDir in strArray){ 
    console.log('Its true!'); 
    // do magic here 
} 

不知道是否有更好的方法來測試這個?

(我用jquery標記了這個問題,因爲這是我正在使用的,儘管我認爲這裏的所有代碼都是vanilla js)。

編輯

其實我並不需要擔心轉換陣列,以降低情況下,我能做到這一點對secondaryDir變量(我認爲)。

+1

只需注意:您不能在JavaScript中使用正則表達式將您的輸入變爲小寫或大寫。 – 2015-03-19 11:47:24

回答

1

以下將是一個正則表達式的解決這個問題:

var pattern = '/([a-zA-Z]*)[\+\- ]([a-zA-Z]*)/'; 
var matches = pattern.exec(text); 

隨着text是含有名字和姓氏的字符串。 matches[1]應該包含名字,並且matches[2]姓氏。

什麼正則表達式做之前+-是匹配的每一個字母,以及每一個信如下匹配。

+0

謝謝我從來沒有使用過exec,但我會試試這個。 – lharby 2015-03-19 12:24:12

+0

是否有可能把它放在小提琴中?我似乎無法得到它的工作。如果我可以在控制檯中看到匹配[0]和匹配[1],它可能會有幫助,但我會繼續嘗試當然:) – lharby 2015-03-19 15:52:00

+0

我從模式中刪除了引號,現在至少我在控制檯中得到了一些東西:var pattern = /([a-zA-Z] *)[\ + \ - ]([a-zA-Z] *)/; – lharby 2015-03-19 16:17:53