我在网址中有这些可能的文件夹名称:
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 标记了这个问题,因为这就是我正在使用的,尽管我认为这里的所有代码都是普通的 js)。
编辑
实际上,我不需要担心将数组转换为小写,因为我可以针对 secondaryDir 变量执行此操作(我认为)。
最佳答案
以下是解决此问题的正则表达式:
var pattern = '/([a-zA-Z]*)[\+\- ]([a-zA-Z]*)/';
var matches = pattern.exec(text);
text
是包含名字和姓氏的字符串。
matches[1]
应包含名字和 matches[2]
姓氏。
正则表达式的作用是匹配 +
、-
或 之前的每个字母,以及匹配后面的每个字母。
关于javascript - 如果字符串的任何变体在 URL 中匹配,则返回 true,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29143693/