2016-05-15 32 views
2

我有一個正在搜索空白或下劃線的實例,用短劃線代替它的正則表達式。使用正則表達式或替換字符

function spinalCase(str) { 

var origSentence = str; 

// case of camelCase 
origSentence = origSentence.replace(/([a-z])([A-Z])/g, '$1 $2'); 


// convert to lower case and remove whitespace or underscores for dashes 
origSentence = origSentence.toLowerCase().replace(/ /g,"-"); 


return origSentence; 
} 


spinalCase('The_Andy_Griffith_Show'); 

我不知道如何將//g的後面添加一個邏輯「或」以正則表達式,或者如果我需要將它做成一個「如果」聲明,這似乎是笨重和尷尬。 任何幫助表示讚賞。

回答

3

使用一個|或字符類:

.replace(/ |_/g,"-"); 
.replace(/[ _]/g,"-"); 

字符類將匹配任何上市。除了幾個元字符外,幾乎所有的字符都將被視爲字面值,例如^開始會否定匹配(作爲匹配所有物件,但是...)和a-b,這將在ab之間進行更改。

可能是我錯過了更多。

|是最接近邏輯或。 match 1|match 2

並結合(我假設大家都是大人了,我不需要告訴你,這是不好的做法,以真正做到這一點):

/(John|Thom)s[oe]n/ 

將匹配:

Johnson 
Johnsen 
Thomson 
Thomsen