【问题标题】:Workaround for JS Regex lookbehind/lookahead for SafariSafari 的 JS Regex 后视/前瞻的解决方法
【发布时间】:2021-03-31 06:58:53
【问题描述】:

我在 JS 中有一个正则表达式 const camel = const camel = /((?<=[A-Z])(?=[A-Z][a-z]))/g;

它基本上试图找到之前是大写字符的地方,之后是大写字符,后面是小写字符。

一些测试用例来验证它是否有效:

以下是我发现很难有一个优雅的工作的情况..

'runUnitTESt'.replace(camel, ' ') = 'runUnitTE St'

此正则表达式在 Chrome 中有效,但在 safari 中无效,因为它不支持后向/前向正则表达式。花了一些时间想一个好的解决方法,但没有找到。有什么见解吗?

谢谢!

【问题讨论】:

    标签: regex safari regex-lookarounds


    【解决方案1】:

    在您的模式中,您有一个围绕 2 个断言的捕获组。您可以做的是将第一个lookbehind 断言改为匹配,并保留第二个lookahead 断言。

    [A-Z](?=[A-Z][a-z])
    

    Regex demo

    然后在替换中使用完整匹配后跟空格$&

    const camel = /[A-Z](?=[A-Z][a-z])/g;
    console.log('runUnitTESt'.replace(camel, "$& "));

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-01-12
      • 1970-01-01
      • 1970-01-01
      • 2022-12-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多