<?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)){
“必须在字符串的开头匹配”的 anchor 应该一直在前面,然后是“用户”字面量;然后指定字符集 [0-9]
和乘数 {1,8}
。最后,您以“必须在字符串末尾匹配” anchor 结束。
对您的原始表达的几点评论:
^
匹配字符串的开头,因此将其写入此表达式中的任何其他位置但开头不会产生预期的结果+
是乘数;{1,8}
也是一个,但是一个表达式后面只能使用一个乘数- 除非您打算使用在表达式中找到的数字,否则不需要括号。
顺便说一句,您也可以使用 \d
而不是 [0-9]
。这是一个自动字符组,可以缩短正则表达式,尽管这个特殊的字符组不会保存太多字符 ;-)
关于php - url解析器的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10999740/