startsWith 和 endsWith 是 ES6 引入的字符串方法,分别判断开头/结尾是否匹配子串;区分大小写,支持可选参数控制起始位置或截断长度;IE 不支持,需 Polyfill 降级。

startsWith 和 endsWith 是 JavaScript 中用于判断字符串开头或结尾是否匹配指定子串的两个实用方法,ES6(ECMAScript 2015)起原生支持,语法简洁、语义清晰,无需正则或手动截取。
startsWith:检查字符串是否以某内容开头
调用方式:str.startsWith(searchString[, position])
- searchString:必需,要查找的子串;可以是字符串或单个字符
- position:可选,从哪个索引开始检查,默认为 0(即从头开始)
- 返回布尔值:
true表示匹配,false表示不匹配 - 区分大小写,如
"Hello".startsWith("h")返回false
示例:
"JavaScript".startsWith("Java") → true"JavaScript".startsWith("Script", 6) → true(从索引 6 开始检查,“Script”正好在位置 6 起)"abc".startsWith("b", 1) → true
endsWith:检查字符串是否以某内容结尾
调用方式:str.endsWith(searchString[, length])
立即学习“Java免费学习笔记(深入)”;
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
- searchString:必需,要匹配的结尾子串
-
length:可选,表示只考虑字符串前
length个字符(即虚拟截断长度),默认为整个字符串长度 - 同样区分大小写,且不支持正则表达式
示例:
"filename.js".endsWith(".js") → true"hello world".endsWith("world", 11) → true(完整长度为 11,等价于默认行为)"hello world".endsWith("o", 5) → true(只看前 5 个字符 "hello",它以 "o" 结尾)
兼容性与降级方案
IE 浏览器不支持这两个方法。若需兼容旧环境,可手动添加 Polyfill:
例如为 String.prototype 补充 startsWith:
if (!String.prototype.startsWith) {<br>
String.prototype.startsWith = function(search, pos) {<br>
return this.substr(!pos || pos < 0 ? 0 : +pos, search.length) === search;<br>
};<br>
}
类似地可实现 endsWith(注意 substr 的第二个参数是长度,不是结束索引)。
使用注意点
- 空字符串
""对任意非空字符串调用startsWith("")或endsWith("")均返回true - 如果
searchString长度超过原字符串(或截断后长度),结果恒为false -
position或length传入非数字时会尝试转换,如"abc".startsWith("a", "1")等价于startsWith("a", 1)→false - 不支持全局模式或通配符,如需模糊匹配请改用
includes()或正则

















