<?php
$string = 'user34567';
if(preg_match('/user(^[0-9]{1,8}+$)/', $string)){
echo 1;
}
?>
我想检查字符串是否有单词user后跟数字,最多可以是 8 个符号。
<?php
$string = 'user34567';
if(preg_match('/user(^[0-9]{1,8}+$)/', $string)){
echo 1;
}
?>
我想检查字符串是否有单词user后跟数字,最多可以是 8 个符号。
你实际上非常接近:
if(preg_match('/^user[0-9]{1,8}$/', $string)){
“必须在字符串开头匹配”的锚点应该一直在前面,然后是“用户”文字;然后你指定字符集[0-9]
和乘数{1,8}
。最后,您以“必须在字符串末尾匹配”锚点结束。
对您的原始表达的一些评论:
^
开头,因此将其写入此表达式中的任何其他位置,但开头不会产生预期的结果+
乘数;{1,8}
也是一个,但表达式后只能使用一个乘数顺便说一句,[0-9]
你也可以使用\d
. 这是一个缩短正则表达式的自动字符组,尽管这个特定的字符组并没有保存太多字符;-)
通过使用^
and $
,你只在模式是唯一的东西时匹配。那是你要的吗?如果是这样,请使用以下内容:
preg_match( '/^user[0-9]{1,8}[^0-9]$/' , $string );
如果您想在一行中的任何位置找到此模式,我会尝试:
preg_match( '/user[0-9]{1,8}[^0-9]/' , $string );
与往常一样,您应该使用 RegexPal 之类的参考工具单独进行正则表达式测试。
你很接近,这是你的正则表达式:/^user[0-9]{1,8}$/
请尝试以下正则表达式:
/^user([0-9]{1,8})$/
使用这个正则表达式:
/^user\d{1,8}$/