我有一个模式
"^\+?\d{3,20}$"
123455
”,“ +123445
”(预期匹配)。123+213
”,“ abc
”上进行测试,期望没有匹配项。此模式适用于pcre_exec()
,但不适用于regexec()
。
答案 0 :(得分:4)
regexec()
函数实现POSIX Basic Regular Expressions (BRE) and Extended Regular Expressions (ERE)。
pcre_exec()
函数实现Perl-Compatible Regular Expressions,它是ERE的主要超集(有关Perl的Perl RE的规范,请参见perlre)。
\d
表示法对POSIX ERE并不特殊(更不用说BRE);这并不意味着“数字”。它确实在PCRE中表示“数字”。如果希望正则表达式在两种方言中都起作用,则需要使用[0-9]
代替\d
,并确保告知regcomp()
来编译ERE。
"^+?[0-9]{3,20}$"