<?php
$string = 'user34567';
if(preg_match('/user(^[0-9]{1,8}+$)/', $string)){
echo 1;
}
?>
I want to check if the string have the word user follows by number that can be 8 symbols max.
You're very close actually:
if(preg_match('/^user[0-9]{1,8}$/', $string)){
The anchor for "must match at start of string" should be all the way in front, followed by the "user" literal; then you specify the character set [0-9]
and multiplier {1,8}
. Finally, you end off with the "must match at end of string" anchor.
A few comments on your original expression:
^
matches the start of a string, so writing it anywhere else inside this expression but the beginning will not yield the expected results +
is a multiplier; {1,8}
is one too, but only one multiplier can be used after an expression Btw, instead of [0-9]
you could also use \\d
. It's an automatic character group that shortens the regular expression, though this particular one doesn't save all too many characters ;-)
By using ^
and $
, you are only matching when the pattern is the only thing on the line. Is that what you want? If so, use the following:
preg_match( '/^user[0-9]{1,8}[^0-9]$/' , $string );
If you want to find this pattern anywhere in a line, I would try:
preg_match( '/user[0-9]{1,8}[^0-9]/' , $string );
As always, you should use a reference tool like RegexPal to do your regular expression testing in isolation.
你很接近,这是你的正则表达式: /^user[0-9]{1,8}$/
请尝试以下正则表达式:
/^user([0-9]{1,8})$/
使用这个正则表达式:
/^user\d{1,8}$/
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.