+
is a special character that indicates 1 or more of the previous character, and by not escaping it you are applying it to the caret. escape it with
and it will match a literal plus sign.
if(!preg_match('/^+[0-9]$/', '+1234567'))
EDIT:
The reason why it didn't match is because you specified 1 digit from 0-9 and the end of the string with $
. You need to make it a variable amount of digits.
if(!preg_match('/^+[0-9]+$/', '+1234567')) {
Shorter version:
if(!preg_match('/^+d+$/', '+1234567')) {
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…