将 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}
(*SKIP)(*FAIL)
技巧的想法是消耗您想要避免的字符,并且不能是匹配结果的一部分。
(*F)
shorthand 对于 (*FAIL)
我有下面的正则表达式,它是为支持 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}
(*SKIP)(*FAIL)
技巧的想法是消耗您想要避免的字符,并且不能是匹配结果的一部分。(*F)
shorthand 对于(*FAIL)