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