JavaScript中实现startsWith与endsWith的多种方法

南乔
南乔
发布时间:2026-10-15| 2人浏览过
原创

JavaScript早期版本缺少原生的字符串开始和结束匹配功能,开发人员常需借助原型扩展或基础API来实现这一需求。本文将介绍三种主流的实现思路:基于正则表达式的通用封装、基于substr子串提取的逻辑判断,以及基于indexOf索引值的精简方案。

方法一:正则表达式封装

通过修改String原型对象,可以将正则表达式^(锚定开头)和$(锚定结尾)动态拼接,从而实现灵活的字符串检测。这是最直观且易于复用的方式。

// 定义以str开头的函数
String.prototype.startWith = function(str) {
    var reg = new RegExp("^" + str);
    return reg.test(this);
};

// 定义以str结尾的函数
String.prototype.endWith = function(str) {
    var reg = new RegExp(str + "$");
    return reg.test(this);
};

方法二:使用substr进行截取对比

substr允许直接获取指定位置长度的子串。逻辑上,如果取出的尾部子串与原目标字符串完全相等,则说明匹配成功。此方法包含对空值及长度溢出的健壮性检查。

<script type="text/javascript">
String.prototype.endWith = function(s) {
    // 处理空字符串、目标字符串为空或目标比源串长的情况
    if (s == null || s == "" || this.length == 0 || s.length > this.length)
        return false;
    
    // 截取末尾并对比
    if (this.substring(this.length - s.length) == s)
        return true;
    else
        return false;
};

String.prototype.startWith = function(s) {
    if (s == null || s == "" || this.length == 0 || s.length > this.length)
        return false;
        
    // 截取头部固定长度并对比
    if (this.substr(0, s.length) == s)
        return true;
    else
        return false;
};
</script>

使用示例:

var url = location.href;
if (url.startWith('https://www.jb51.net')) {
    // 当前页面位于指定域下
}

方法三:基于indexOf判断

indexOf用于查找子串在父串中首次出现的位置索引。若返回值为 0,则证明该子串从字符串的最开始处匹配,常用于判断开头。

var index = str.indexOf('abc');
if (index == 0) {
    // 以'abc'开头
}

注意事项与建议

  • 环境兼容性:上述原型扩展方法适用于所有支持JS的环境。但在现代开发中,强烈建议使用ES6引入的原生startsWith()和endsWith()方法,其性能更优且无需污染全局String原型。
  • 安全性:使用正则方法时,若搜索字符串包含特殊正则字符(如*, ?等),建议先进行转义处理,以免引发异常。

以上就是JavaScript中实现startsWith与endsWith方法的详细内容,更多关于字符串判定的技巧请持续关注本站相关文章!

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。