Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
960 views
in Technique[技术] by (71.8m points)

php - preg_match: nothing to repeat / no match

I am using this: if(!preg_match('/^+[0-9]$/', '+1234567'))

and am getting:

Warning: preg_match() [function.preg-match]: Compilation failed: nothing to repeat at offset 1

any ideas why?


update: Now using this: if(!preg_match('/^+[0-9]$/', '+1234567'))

and am getting no match.

any ideas why?

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)

+ 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')) {

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

2.1m questions

2.1m answers

60 comments

57.0k users

...