<?php
$string = 'user34567';
if(preg_match('/user(^[0-9]{1,8}+$)/', $string)){
echo 1;
}
?>
我要检查字符串是否有字用户遵循数字,可以是8个符号最大值。正则表达式
<?php
$string = 'user34567';
if(preg_match('/user(^[0-9]{1,8}+$)/', $string)){
echo 1;
}
?>
我要检查字符串是否有字用户遵循数字,可以是8个符号最大值。正则表达式
你实际上是非常接近:
if(preg_match('/^user[0-9]{1,8}$/', $string)){
为“必须在字符串的开始匹配”应该是在前面一路,其次是“用户”锚文本;然后指定字符集[0-9]
和乘数{1,8}
。最后,你以“必须匹配字符串结尾”锚点结束。
您的原始表达几点意见:
^
字符串的开头匹配,所以写其他地方有这样的表达里,但一开始不会产生预期的结果+
是乘数; {1,8}
也是一个,但在表达式后只能使用一个乘数顺便说一句,而不是[0-9]
你也可以使用\d
。它是缩短了正则表达式的自动字符组,虽然这尤其是一个不保存所有的字符太多;-)
你接近,这里是你的正则表达式:/^user[0-9]{1,8}$/
试试下面的正则表达式来代替:
/^user([0-9]{1,8})$/
使用这个表达式:
/^user\d{1,8}$/
利用^
和$
,只有当模式是唯一的行时才匹配。那是你要的吗?如果是这样,使用以下命令:
preg_match('/^user[0-9]{1,8}[^0-9]$/' , $string);
如果你想在一条线上的任何地方找到这种模式,我会尝试:
preg_match('/user[0-9]{1,8}[^0-9]/' , $string);
与往常一样,你应该使用一个参考工具,如RegexPal做你的正则表达式测试是孤立的。