You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Chrome正常运行的正则表达式在Safari报错,求兼容改写方案

兼容Safari的正则改写方案

原正则的核心需求是:字符串首尾不能为空格,中间仅允许字母、数字、'、.、-、,和空格字符。由于Safari不支持后行断言(?<!...),可以通过正向匹配逻辑改写:

/^(?!\s)(?:[A-Za-z0-9'.,-\s]*[A-Za-z0-9'.,-])?$/.test('ABCD@#'); // 返回false,符合预期

逻辑说明

  • ^(?!\s):确保字符串开头不是空格
  • (?:[A-Za-z0-9'.,-\s]*[A-Za-z0-9'.,-])?:
    • 非捕获组,?表示该组可选(兼容空字符串场景)
    • 内部先匹配任意数量的允许字符(包括中间空格),最后以一个非空格的允许字符结尾,保证字符串末尾不会是空格
  • $:匹配字符串结束位置

如果不需要兼容空字符串(即要求至少有一个有效字符),可以简化为:

/^(?!\s)[A-Za-z0-9'.,-\s]*[A-Za-z0-9'.,-]$/.test('ABCD@#');

内容的提问来源于stack exchange,提问作者jimmy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 08:05:22