使用正则表达式OR替换字符

时间:2016-05-15 19:29:22

标签: regex

我有一个正则表达式,它正在搜索空格或下划线的实例,用短划线替换它。

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之后向正则表达式添加逻辑“OR”,或者如果我需要将其变成'if'语句,这看起来很笨拙。  任何帮助表示赞赏。

1 个答案:

答案 0 :(得分:3)

使用|或字符类:

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

字符类将匹配列出的任何内容。除了一些元字符外,几乎所有字符内部的字符都将被视为字面值,例如开头的^将否定匹配(除了......之外的所有内容)和a-bab之间进行更改。

我可能会错过更多。

|是您最接近逻辑或。 match 1|match 2

并且结合起来(我假设我们都是成年人,而且我不需要告诉你,实际这样做是不好的做法):

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

哪个匹配:

Johnson
Johnsen
Thomson
Thomsen