url解析器的正则表达式

Mar*_*rov 5 php regex preg-match regular-language

<?php

    $string = 'user34567';

            if(preg_match('/user(^[0-9]{1,8}+$)/', $string)){
                echo 1;
            }

?>
Run Code Online (Sandbox Code Playgroud)

我想检查字符串是否有单词user跟随数字,最多可以是8个符号.

Ja͢*_*͢ck 10

你真的非常接近:

if(preg_match('/^user[0-9]{1,8}$/', $string)){
Run Code Online (Sandbox Code Playgroud)

"必须在字符串开头匹配"的锚点应该一直在前面,然后是"user"字面值; 然后指定字符集[0-9]和乘数{1,8}.最后,你以"必须在字符串末尾匹配"锚点结束.

关于原始表达的一些评论:

  1. ^字符串的开始,比赛这么写,其他地方有这样的表达里,但一开始不会产生预期的结果
  2. +是一个乘数; {1,8}也是一个,但在表达式后只能使用一个乘数
  3. 除非您打算使用在表达式中找到的数字,否则不需要括号.

顺便说一句,而不是[0-9]你也可以使用\d.这是一个缩短正则表达式的自动字符组,虽然这个特殊的字符组不会保存太多字符;-)