【问题标题】:Regex - unhandled js exception in react native正则表达式 - 反应原生中未处理的 js 异常
【发布时间】:2021-09-13 09:36:05
【问题描述】:

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

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

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

这在浏览器中运行良好,但由于以下原因导致反应原生应用程序崩溃:

no stack', reason: 'Unhandled JS Exception: Invalid regular expression: invalid group specifier name

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

【问题讨论】:

标签: javascript regex react-native


【解决方案1】:

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

^[\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 个可能字符中的最后一个。

【讨论】:

  • 这个正则表达式(原始正则表达式解释)的问题是以下情况不匹配:somethiing@g.co something@co.uk something@c.co.uk somethign@​​com .co.uk
  • 我的回答应该在逻辑上等价到你上面的内容,它应该完全解决不兼容的问题。如果您对当前的正则表达式有一些其他问题,您可能需要提出一个新问题。
  • 如果原始正则表达式与您提供的新正则表达式不匹配的某些电子邮件匹配,您能否解释一下它在逻辑上的等效性?
  • @user3055126 你说得对,我有问题。请尝试上面的更新。
【解决方案2】:

我认为这个正则表达式在正则表达式模式中可能不起作用。

这对我来说适用于简单的电子邮件格式 abc@mail.com

var regex = /^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-01-30
    • 1970-01-01
    • 1970-01-01
    • 2022-11-14
    • 1970-01-01
    • 2021-05-21
    • 1970-01-01
    相关资源
    最近更新 更多