EndsWith方法与以问号结尾的字符串不匹配

时间:2011-12-17 05:19:03

标签: javascript function pattern-matching

是否有一种简单的方法可以使这个函数/方法使用以问号结尾的字符串?

String.prototype.EndsWith = function(str){return (this.match(str+"$")==str)}

var aa='a cat';
var bb='a cat?'; 

if( aa.EndsWith('cat') ){
    document.write('cat matched'+'<br\/>');
}

if( bb.EndsWith('cat?') ){
    document.write('cat? matched');
}

在当前状态下,只匹配第一个测试(cat)。

4 个答案:

答案 0 :(得分:1)

我会跳过正则表达式并执行此操作:

String.prototype.EndsWith = function(str) {
  return (this.lastIndexOf(str) == this.length - str.length);
}

答案 1 :(得分:0)

P.S. :请注意,函数应以小写字母开头。

String.prototype.endsWith = function(str){
    return (this.lastIndexOf(str) === this.length - str.length)            
  }

var aa='a cat';
var bb='a cat?';

if(aa.endsWith('cat')){
    document.write('cat matched'+'<br\/>');
}

if(bb.endsWith('cat?')){
    document.write('cat? matched');
}

小提琴:http://jsfiddle.net/USzfa/4/

答案 2 :(得分:0)

如果您要使用基于当前字符串的正则表达式,则必须转义所有在正则表达式中具有特殊含义的字符,所以不仅仅是问号,而是您看到的所有其他字符here

我认为使用.lastIndexOf()会更容易:

String.prototype.EndsWith = function(str){
   return (this.lastIndexOf(str) === this.length - str.length);
}

答案 3 :(得分:0)

我不会让它成为一种方法 - 只需在需要时编写适当的reg exp。

if(/cat[.'"?!]*$/.test(aa)){
}