Javascript 检查字符串是否以任意多个字符结尾

Javascript 检查字符串是否以任意多个字符结尾,javascript,Javascript,如何检查字符串是否以多个字符中的任何一个结尾?当前,此代码返回false,即使字符串以问号结尾。如果字符串以句点、感叹号或问号结尾,则正常工作的代码将返回true,如果最后一个字符是其他字符,则返回false 显然,我可以独立检查这些条件,但假设我有一个很长的列表,肯定有更好的方法吗 函数myFunction(){ var str=“你好吗?”; 变量n=str.endsWith(“.”、“!”、“?”); document.getElementById(“demo”).innerHTML=n

如何检查字符串是否以多个字符中的任何一个结尾?当前,此代码返回false,即使字符串以问号结尾。如果字符串以句点、感叹号或问号结尾,则正常工作的代码将返回true,如果最后一个字符是其他字符,则返回false

显然,我可以独立检查这些条件,但假设我有一个很长的列表,肯定有更好的方法吗

函数myFunction(){
var str=“你好吗?”;
变量n=str.endsWith(“.”、“!”、“?”);
document.getElementById(“demo”).innerHTML=n;
}
试试看

endsWith
只是不需要测试多个字符串。您可以定义它们的数组,并使用
endsWith
检查每个值:

function endsWithAny(suffixes, string) {
    return suffixes.some(function (suffix) {
        return string.endsWith(suffix);
    });
}

function myFunction() {
    var str = "Hello?";
    var n = endsWithAny([".", "!", "?"], str);
    document.getElementById("demo").innerHTML = n;
}
或将正则表达式用于一次性:

var n = /[.!?]$/.test(str);

出于某种原因,接受答案的函数给了我一些问题,所以我写了一个适合我的函数:

//check if string ends with any of array suffixes
function endsWithAny(suffixes, string) {
    for (let suffix of suffixes) {
        if(string.endsWith(suffix))
            return true;
    }
    return false;
}
那么你的函数是

function myFunction() {
    var str = "Hello?";
    var n = endsWithAny([".", "!", "?"], str);
    document.getElementById("demo").innerHTML = n;
}

您可以将
indexOf
slice
结合使用:

函数myFunction(){
var str=“你好吗?”;
变量n='.!?'.indexOf(str.slice(-1))>=0;
document.getElementById(“demo”).innerHTML=n;
}
试试看

正则表达式不是
^.*.[.!?]$
?我不熟悉正则表达式的Javascript实现,所以我可能wrong@e_i_pi:那是相等的,当然。但是,这里的一个没有锚定到字符串的开头<代码>测试将在任何地方匹配(与Python的
匹配
不同,例如,如果您考虑的是那种类型的API)。使用typescript:
函数endsWithAny(后缀:string[],search:string):boolean{返回后缀。some((后缀:string):boolean=>search.endsWith(后缀));}