匹配最后一个点后的文本中的字符串

时间:2016-03-21 17:03:47

标签: javascript

我有以下字符串:

var a = "vm.model.password";
var b = "vm.model.passwordCheck";

我有以下内容:

var sa = "Password";
var sb = "PasswordCheck";

我需要检查a中是否包含sa和b中的sb。

所以为了比较我需要检查点后的a或b中的字符串。 并检查sa是否等于该字符串,但首先将sa的第一个字母设为小写。

我做的事情是:

a.indexOf(sa.toLowerCase()) > -1;

但问题是sa会与b匹配,而sb不会与b匹配,因为它以P而不是p开头。

这样做的最佳方式是什么?

5 个答案:

答案 0 :(得分:3)

至于获得最后一句话:

如何使用str.lastIndexOf('.')比split()快得多:

var a = "vm.model.password";
var b = "vm.model.passwordCheck";

console.log(a.slice(a.lastIndexOf('.') + 1))
// a .toLowerCase at the end should do it

JSbin:https://jsbin.com/komowi/edit?js,console

鉴于你是如何遇到大写/小写字母的问题,可能是时候查看一个RegExp,它上面有一个'i'标志,这意味着它将与案例MDN RegExp匹配 这不是每个人都需要的,但肯定会有所帮助

答案 1 :(得分:1)

如果要检查的单词总是在最后,你可以这样做。

var aArray = a.split(".");
sa.toLowerCase() === aArray[aArray.length-1].toLowerCase();

答案 2 :(得分:1)

使用pop()可以得到数组的最后一个元素。

if( sa.toLowerCase() == a.split(".").pop() ){
 //your code here
}

答案 3 :(得分:1)

像...一样的东西。

var a = "vm.model.password";
var b = "vm.model.passwordCheck";

var sa = "Password";
var sb = "PasswordCheck";

var endA = a.substring(a.lastIndexOf('.') + 1).toLowerCase();
var endB = b.substring(a.lastIndexOf('.') + 1).toLowerCase();

if (endA.includes(sa.toLowerCase())) {
    alert("A match");
}

if (endB.includes(sb.toLowerCase())) {
    alert("B match");
}

显然,你应该检查它是否包含'。'或者lastIndexOf结果是> = 0等,但我为了简单起见避免了这种验证。

答案 4 :(得分:1)

这个怎么样:

a.toLowerCase().split('.').pop() === sa.toLowerCase()

b.toLowerCase().split('.').pop() === sb.toLowerCase()