php - url解析器的正则表达式

标签 php regex preg-match regular-language

<?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. ^ 匹配字符串的开头,因此将其写入此表达式中的任何其他位置但开头不会产生预期的结果
  2. + 是乘数; {1,8}也是一个,但是一个表达式后面只能使用一个乘数
  3. 除非您打算使用在表达式中找到的数字,否则不需要括号。

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

关于php - url解析器的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10999740/

相关文章:

php - 当文本也包含 'of' 时,正则表达式提取包含 'Isle of Man' (如 'of' )的地名

regex - 为什么 split 在这里不起作用?

javascript - 我无法使用 PHP 在 Shopify 中更新产品

php - 索引聊天mysql表

php - 我的mysql语法有错误

PHP RegEx 防止重复字符

php - 了解 preg_match_all() 函数调用中的模式

c++ - PHP 的 preg_match() 等同于 C++?

php - 正则表达式 PHP IF 包含和限制

javascript - 如何使用 javascript 设置 session 变量并通过 php 代码获取它