首页 > 解决方案 > 正则表达式 - 反应原生中未处理的 js 异常

问题描述

我在我的 react-native 应用程序中使用以下正则表达式。

这是一个电子邮件验证正则表达式:

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

这在浏览器中工作正常,但由于以下原因使反应本机应用程序崩溃:

没有堆栈',原因:'未处理的 JS 异常:无效的正则表达式:无效的组说明符名称

有人可以帮助让它在本机反应上工作,也许通过实现这个正则表达式实现的同样的事情,但没有后向表达式?

标签: javascriptregexreact-native

解决方案


该问题可能是由(?<!-)您的 JavaScript 引擎不支持的正则表达式模式末尾的负前瞻引起的。为了确保电子邮件末尾不会出现连字符,我们可以简单地使用:

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

即,仅用于[A-Za-z0-9]表示模式中 63 个可能字符中的最后一个。


推荐阅读