将 ECMAScript Javascript 正则表达式编写为 Perl 风格 (PCRE) / (PCRE2)

Writing ECMAScript Javascript Regex to Perl flavour (PCRE) / (PCRE2)

我有下面的正则表达式,它是为支持 ECMAScript Javascript 风格而编写的。然而,这必须用 Perl 风格重写 (PCRE) / (PCRE2)

(?<!x)(?<!\border\D*\W*)(?<!\border\D*number\W*)(?=(?:[._ –-]*\d){9})(?!9|66\D*6|00\D*0|(?:\d\D*){3}0\D*0|(?:\d\D*){5}0(?:\D*0){3})\d(?:[._ –-]*\d){4}

上面的正则表达式中有一组规则,Regex Demo here

我不知道如何在 Perl 中实现它,但是如果我能得到这方面的帮助,那就太好了!

您可以使用这个符合 PCRE 的正则表达式,相当于您的 Javascript 正则表达式:

\border(?:\s*number)?\W*\d+(*SKIP)(*F)|(?<!x)(?=(?:[._ –-]*\d){9})(?!9|66\D*6|00\D*0|(?:\d\D*){3}0\D*0|(?:\d\D*){5}0(?:\D*0){3})\d(?:[._ –-]*\d){4}

RegEx Demo

  • (*SKIP)(*FAIL) 技巧的想法是消耗您想要避免的字符,并且不能是匹配结果的一部分。
  • (*F) shorthand 对于 (*FAIL)