regexec 和 pcre_exec 有什么区别?

What's the difference between regexec and pcre_exec?

我有一个模式

"^\+?\d{3,20}$"

此模式适用于 pcre_exec() 但不适用于 regexec()

regexec() function implements POSIX Basic Regular Expressions (BRE) and Extended Regular Expressions (ERE).

Perl 对 Perl RE 的规范 pcre_exec() function implements Perl-Compatible Regular Expressions, which are a major superset of the ERE (see perlre

\d 表示法对于 POSIX ERE 并不特殊(更不用说 BRE);这并不意味着 'a digit'。它在 PCRE 中的意思是 'a digit'。如果您希望正则表达式在两种方言中都有效,您需要使用 [0-9] 代替 \d,并确保 regcomp() 被告知编译 ERE。

"^+?[0-9]{3,20}$"