热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

正则零宽导致iOS端uniapp报错:连接服务器超时,点击重试

一个H5项目中使用安卓设备一切正常,用iOS就显示 连接服务器

一个 H5 项目中使用安卓设备一切正常,用 iOS 就显示 连接服务器超时,点击屏幕重试。

ios pt.png 正则零宽导致iOS端uni-app报错:连接服务器超时,点击重试 经验总结

排查了半天,原来是正则引起的。

可能会报以下错误:

Invalid regular expression: invalid group specifier name

[system] SyntaxError{}

Info Warn Error SyntaxError: Invalid regular expression: invalid group specifier name

原因:

iOS 不支持零宽断言,如果正则表达式中包含零宽断言 , 在安卓手机上正常 , 但是在 iOS 上就会报错。

常见零宽断言:?<= 、? 、?! 、?=

例如:只显示姓名开头第一个字(正则),格式:张**

//只显示姓名开头第一个字

data.replace(/(?<=.)./g, &#39;*&#39;)

解决:

不使用零宽断言,可以使用截取&拼接字符串的方式,如果实现比较复杂的效果可以自己封装一个方法。

例如:我要截取银行卡后四位,前面加星号。

正则(断言):

no.replace(/(?<=/d{0})/d+(?=/d{4})/, "****")

截取&拼接字符串:

"****" + no.slice(-4)

这样就可以兼容 iOS 端了。

扩展:正则零宽断言

正则位置匹配:

零宽:只匹配位置,在匹配过程中,不占用字符,所以被称为零宽。

先行:正则引擎在扫描字符的时候,从左往右扫描,匹配扫描指针未扫描过的字符,先于指针,故称先行。

后行:匹配指针已扫描过的字符,后于指针到达该字符,故称后行,即产生回溯。

正向:即匹配括号中的表达式。

负向:不匹配括号中的表达式。

es5 就支持了先行断言

es2018 才支持后行断言

零宽正向先行断言,又称正向向前查找(positive lookhead)

注意: .在正则里面代表匹配除换行符,回车符等少数空白字符之外的任何字符,匹配其时需要转义

(?=pattern):某位置后面紧接着的字符序列要匹配 pattern

例:

`sinM.`.match(/sin(?=M/.)/g); // ["sin"] `M.sin`.match(/sin(?=M/.)/g); // null 

第一个 sin 会匹配,因为他后面有 pattern

零宽负向先行断言,又称负向向前查找(negative lookhead)

(?!pattern):某位置后面紧接着的字符序列不能匹配 pattern

例:

`M.sin`.match(/sin(?!M/.)/g); // ["sin"] `sinM.`.match(/sin(?!M/.)/g); // null 

第一个 sin 会匹配,因为他后面没有 pattern

零宽正向后行断言,又称正向向后查找(positive lookbehind)

(?<=pattern):某位置前面紧接着的字符序列要匹配 pattern

例:

&#39;sinM.&#39;.match(/(?<=M/.)sin/g); // null &#39;M.sin&#39;.match(/(?<=M/.)sin/g); // ["sin"] 

第二个 sin 会匹配,因为它前面有 pattern

零宽负向后行断言,又称负向向后查找(negative lookbehind)

(?

例:

&#39;sinM.&#39;.match(/(?

第一个 sin 会匹配,因为它前面没有 pattern

参考文献:

关于正则位置匹配(断言)的技巧

未经允许不得转载:w3h5 » 正则零宽导致iOS端uni-app报错:连接服务器超时,点击重试


推荐阅读
  • 本文探讨了在不使用服务器控件的情况下,如何通过多种方法获取并修改页面中的HTML元素值。除了常见的AJAX方式,还介绍了其他可行的技术方案。 ... [详细]
  • 本文详细介绍了Java编程语言中的核心概念和常见面试问题,包括集合类、数据结构、线程处理、Java虚拟机(JVM)、HTTP协议以及Git操作等方面的内容。通过深入分析每个主题,帮助读者更好地理解Java的关键特性和最佳实践。 ... [详细]
  • 网络运维工程师负责确保企业IT基础设施的稳定运行,保障业务连续性和数据安全。他们需要具备多种技能,包括搭建和维护网络环境、监控系统性能、处理突发事件等。本文将探讨网络运维工程师的职业前景及其平均薪酬水平。 ... [详细]
  • 优化联通光猫DNS服务器设置
    本文详细介绍了如何为联通光猫配置DNS服务器地址,以提高网络解析效率和访问体验。通过智能线路解析功能,域名解析可以根据访问者的IP来源和类型进行差异化处理,从而实现更优的网络性能。 ... [详细]
  • CentOS 7 磁盘与文件系统管理指南
    本文详细介绍了磁盘的基本结构、接口类型、分区管理以及文件系统格式化等内容,并提供了实际操作步骤,帮助读者更好地理解和掌握 CentOS 7 中的磁盘与文件系统管理。 ... [详细]
  • Windows服务与数据库交互问题解析
    本文探讨了在Windows 10(64位)环境下开发的Windows服务,旨在定期向本地MS SQL Server (v.11)插入记录。尽管服务已成功安装并运行,但记录并未正确插入。我们将详细分析可能的原因及解决方案。 ... [详细]
  • 探讨如何通过编程技术实现100个并发连接,解决线程创建顺序问题,并提供高效的并发测试方案。 ... [详细]
  • 本周信息安全小组主要进行了CTF竞赛相关技能的学习,包括HTML和CSS的基础知识、逆向工程的初步探索以及整数溢出漏洞的学习。此外,还掌握了Linux命令行操作及互联网工作原理的基本概念。 ... [详细]
  • 本文详细介绍了如何使用PHP检测AJAX请求,通过分析预定义服务器变量来判断请求是否来自XMLHttpRequest。此方法简单实用,适用于各种Web开发场景。 ... [详细]
  • 1:有如下一段程序:packagea.b.c;publicclassTest{privatestaticinti0;publicintgetNext(){return ... [详细]
  • 本题涉及一棵由N个节点组成的树(共有N-1条边),初始时所有节点均为白色。题目要求处理两种操作:一是改变某个节点的颜色(从白变黑或从黑变白);二是查询从根节点到指定节点路径上的第一个黑色节点,若无则输出-1。 ... [详细]
  • 并发编程:深入理解设计原理与优化
    本文探讨了并发编程中的关键设计原则,特别是Java内存模型(JMM)的happens-before规则及其对多线程编程的影响。文章详细介绍了DCL双重检查锁定模式的问题及解决方案,并总结了不同处理器和内存模型之间的关系,旨在为程序员提供更深入的理解和最佳实践。 ... [详细]
  • 技术人员转型项目管理:常见思维误区与挑战解析
    本文探讨了技术人员在向项目管理角色转变过程中常见的思维误区和困惑,分析了如何有效管理项目中的事务和人员,提供了实用的解决方案。 ... [详细]
  • 基于KVM的SRIOV直通配置及性能测试
    SRIOV介绍、VF直通配置,以及包转发率性能测试小慢哥的原创文章,欢迎转载目录?1.SRIOV介绍?2.环境说明?3.开启SRIOV?4.生成VF?5.VF ... [详细]
  • 探索1000以内的完美数:因数和等于自身
    本文探讨了如何在1000以内找到所有完美数,即一个数的因数(不包括自身)之和等于该数本身。例如,6是一个完美数,因为1 + 2 + 3 = 6。通过编程实现这一过程,可以更好地理解完美数的特性。 ... [详细]
author-avatar
方家菱芝合
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有