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

React Native正则抛出未处理JS异常 求无后向断言的等效邮箱校验方案

问题原因

React Native 运行环境的 JS 引擎(默认的 Hermes 或低版本 JavaScriptCore)不支持 ES2018 引入的后向断言语法,你原正则末尾的 (?<!-) 属于后向否定断言,因此触发正则解析报错。

修复后的正则

修改思路为将后向断言的校验逻辑,转换为显式的字符范围限定,和原正则校验规则完全一致:

^[\w]+@((?:[A-Za-z0-9](?:[A-Za-z0-9-]{0,61}[A-Za-z0-9])?\.)+)[A-Za-z0-9](?:[A-Za-z0-9-]{0,61}[A-Za-z0-9])?$

逻辑说明

原来的顶级域名校验规则 (?:[A-Za-z0-9-]{2,63}(?<!-)) 要求:

  • 长度为2~63位
  • 最后一位不能是连字符-
    修改后的顶级域名规则和前面子域名的校验逻辑保持一致:
  • 首位必须是字母/数字
  • 末位必须是字母/数字
  • 中间最多允许61位字母/数字/连字符
    总长度天然符合2~63位的要求,同时自动满足首尾不能为连字符的规则,完全覆盖原正则的校验能力。

使用示例

const emailRegex = /^[\w]+@((?:[A-Za-z0-9](?:[A-Za-z0-9-]{0,61}[A-Za-z0-9])?\.)+)[A-Za-z0-9](?:[A-Za-z0-9-]{0,61}[A-Za-z0-9])?$/

// 测试用例
emailRegex.test('user@example.com') // 返回 true
emailRegex.test('user@example.com-') // 返回 false(匹配原规则禁止末尾为-的要求)
emailRegex.test('user@sub-domain.example.com') // 返回 true

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 11:57:02