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

时间:2015-03-19 11:43:38

标签: javascript jquery arrays regex if-statement

我在网址中有这些可能的文件夹名称:

firstname+lastname
firstname-lastname
firstname lastname
Firstname+Lastname

我需要一种方法来捕捉这些,常见的元素是firstname和lastname(所以我不关心+ - 或空格),但我需要转换它们toLowerCase();

这可以用正则表达式完成吗? (我在使用正则表达式时并不是特别复杂,我可以使用基本的match()函数。

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

我在看这个解决方案: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 个答案:

答案 0 :(得分:1)

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

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

text是包含firstname和lastname的字符串。 matches[1]应包含名字,matches[2]姓氏。

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