我在网址中有这些可能的文件夹名称:
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变量执行此操作(我认为)。
答案 0 :(得分:1)
以下是此问题的正则表达式解决方案:
var pattern = '/([a-zA-Z]*)[\+\- ]([a-zA-Z]*)/';
var matches = pattern.exec(text);
text
是包含firstname和lastname的字符串。
matches[1]
应包含名字,matches[2]
姓氏。
正则表达式的作用是匹配+
,-
或之前的每个字母,以及匹配后面的每个字母。