Javascript 如果URL中字符串的任何变体匹配,则返回true

Javascript 如果URL中字符串的任何变体匹配,则返回true,javascript,jquery,arrays,regex,if-statement,Javascript,Jquery,Arrays,Regex,If Statement,我在url中有以下可能的文件夹名称: firstname+lastname firstname-lastname firstname lastname Firstname+Lastname 我需要一种方法来捕捉它们,常见的元素是firstname和lastname(因此我不关心+-或空格),但我确实需要将它们转换为lowercase() 这可以用正则表达式完成吗?(我对正则表达式的使用不是特别熟练,我可以使用基本的match()函数 我的另一个想法是将这些变量存储在一个数组中,如果其中任何一个

我在url中有以下可能的文件夹名称:

firstname+lastname
firstname-lastname
firstname lastname
Firstname+Lastname
我需要一种方法来捕捉它们,常见的元素是firstname和lastname(因此我不关心+-或空格),但我确实需要将它们转换为lowercase()

这可以用正则表达式完成吗?(我对正则表达式的使用不是特别熟练,我可以使用基本的match()函数

我的另一个想法是将这些变量存储在一个数组中,如果其中任何一个项与其中一个数组项匹配,则返回true

我正在研究这个解决方案:

在这种情况下,我认为我的数组和语句应该是这样的:

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标记了这个问题,因为我正在使用jquery,尽管我认为这里的所有代码都是vanillaJS)

编辑


实际上,我不需要担心将数组转换为小写,因为我可以针对secondaryDir变量(我认为)执行此操作。

以下是解决此问题的正则表达式解决方案:

var pattern = '/([a-zA-Z]*)[\+\- ]([a-zA-Z]*)/';
var matches = pattern.exec(text);
text
是包含firstname和lastname的字符串。
匹配项[1]
应包含firstname,而
匹配项[2]
lastname


正则表达式所做的是匹配
+
-
之前的每个字母,以及匹配后面的每个字母。

请注意:您不能在javascript中使用正则表达式将输入转换为小写或大写。谢谢,我从未使用过exec,但我会尝试一下。是否可以将其放在小提琴中?我不能如果我能在控制台中看到匹配项[0]和匹配项[1],可能会有所帮助,但我会继续尝试:)我从模式中删除了引号,现在至少我在控制台中得到了一些东西:var模式=/([a-zA-Z]*)[\+\-]([a-zA-Z]*)/;