是否有一种简单的方法可以使这个函数/方法使用以问号结尾的字符串?
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)。
答案 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');
}
答案 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)){
}