正则表达式中回溯的 JavaScript 替代方法



我有这个带有负面回溯的正则表达式,因为它在 Firefox 和 Internet Explorer 中不受支持,需要替代回溯。有人可以在这里帮助我修改表达式吗? 这是表达式:

((?=^.{1,254}$)(^(((?!-)[a-zA-Z0-9-]{1,63}(?<!-).)+(?!-)[a-zA-Z0-9-]{1,63}(?<!-)).?$)|(^((?!-)[a-zA-Z0-9-]{1,63}(?<!-))$))

我尝试像这样修改表达式,但它仍然无法按预期工作:

((?=^.{1,254}$)(^(((?!-)[a-zA-Z0-9-]{1,63}"([^"-]?)".)+(?!-)[a-zA-Z0-9-]{1,63}"([^"-]?)").?$)|(^((?!-)[a-zA-Z0-9-]{1,63}"([^"-]?)")$))

有人可以在这里帮助我吗?

以下是需要在表达式中使用 outlookbehind 的测试用例:

  1. *.abc - 应该不起作用
      • 应该不起作用
  2. pg.ing-ad - 应该工作
  3. www.abc.com - 应该工作
  4. *.de; - 不应该工作
  5. a - 应该工作
  6. *.d-e - 应该不起作用
  7. www.abc def.com - 不应该工作

这将通过所有测试用例:

^(?=.{1,254}$)[a-zA-Z0-9](?:(?:[-.]?[a-zA-Z0-9]){0,62})+$

演示和解释

最新更新