Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 自定义模式的正则表达式问题_Php_Regex_Preg Replace - Fatal编程技术网

Php 自定义模式的正则表达式问题

Php 自定义模式的正则表达式问题,php,regex,preg-replace,Php,Regex,Preg Replace,下面是模式示例: AB17-12345 所以前2个字符是字母字符,第3和第4个是数字,后面跟一个“破折号”字符,然后跟5个数字 这就是我现在拥有的: "/[^A-Z]{2}\d{5}/" 如果有人能帮我解决这个问题,那将非常有帮助,因为我只是正则表达式的初学者。您可以使用: 从字符串的开头开始^ 匹配2个大写字符[A-Z]{2} 匹配两个数字\d{2} 匹配破折号- 匹配5个整数\d{5} 字符串的结尾$ 您可以使用: 从字符串的开头开始^ 匹配2个大写字符[A-Z]{2} 匹配两个数

下面是模式示例:

AB17-12345

所以前2个字符是字母字符,第3和第4个是数字,后面跟一个“破折号”字符,然后跟5个数字

这就是我现在拥有的:

"/[^A-Z]{2}\d{5}/"
如果有人能帮我解决这个问题,那将非常有帮助,因为我只是正则表达式的初学者。

您可以使用:

  • 从字符串的开头开始
    ^
  • 匹配2个大写字符
    [A-Z]{2}
  • 匹配两个数字
    \d{2}
  • 匹配破折号
    -
  • 匹配5个整数
    \d{5}
  • 字符串的结尾
    $
您可以使用:

  • 从字符串的开头开始
    ^
  • 匹配2个大写字符
    [A-Z]{2}
  • 匹配两个数字
    \d{2}
  • 匹配破折号
    -
  • 匹配5个整数
    \d{5}
  • 字符串的结尾
    $

这是第四个正确答案的补充,我正在解释你的正则表达式的含义以及你犯错误的地方

如果有人能帮我,这将是非常有帮助的,因为我只是正则表达式的初学者

您试图对
[^A-Z]{2}\d{5}
执行的操作解释如下:

  • [^A-Z]{2}
    匹配大写字母以外的任何内容,因为您使用的是

  • \d{5}
    将匹配五位数字

对于您的输入
AB17-12345
它将匹配
7-12345

它与AA12345、BC12323等不匹配


匹配的可能性很多,例如,
aa11234,$412345,@#12323
等等。

这是第四只鸟的答案之外的另一个答案,它是正确的。我正在解释你的正则表达式的意思和你犯错误的地方

如果有人能帮我,这将是非常有帮助的,因为我只是正则表达式的初学者

您试图对
[^A-Z]{2}\d{5}
执行的操作解释如下:

  • [^A-Z]{2}
    匹配大写字母以外的任何内容,因为您使用的是

  • \d{5}
    将匹配五位数字

对于您的输入
AB17-12345
它将匹配
7-12345

它与AA12345、BC12323等不匹配


匹配的可能性很多,比如
aa11234,$412345,@#12323
等等。

/[^A-Z]{2}\d{2}-\d{5}/
@bassxzero不是A-Z<代码>^在
[]
里面不是吗?
/[^A-Z]{2}\d{2}-\d{5}/
@bassxzero不是A-Z
^
内部
[]
不是吗?也可以使用
[:upper:]
\p{Lu}
\p{Uppercase\u Letter}
匹配大写字母。也可以使用
[:upper:]
\p{Lu}
\p{Uppercase\u Letter}
匹配大写字母。我不认为这是正确的:“您的匹配项将是AA12345、BC12323等等。”因为
[^A-Z]
。奇怪的是
AB17-12345
将匹配
/[^A-Z]{2}\d{5}/
因为5位数字前的2个字符不是大写字母。@mickmackusa:我向OP的正则表达式提供了解释。您能指出它的不准确之处吗?请参阅glennjackman的评论。您不是在解释与OP的示例输入字符串相关的模式,而是在使用您自己的输入字符串进行解释——th对于OP和未来的读者来说,它的价值更低。@mickmackusa:我已经解释了OP对正则表达式的错误之处。因为第四只鸟提供了正确的答案,我避免了复制它。我不认为这是正确的:“您的匹配项将是AA12345、BC12323等等。”因为
[^A-Z]
。奇怪的是
AB17-12345
将匹配
/[^A-Z]{2}\d{5}/
因为5位数字前的2个字符不是大写字母。@mickmackusa:我向OP的正则表达式提供了解释。您能指出它的不准确之处吗?请参阅glennjackman的评论。您不是在解释与OP的示例输入字符串相关的模式,而是在使用您自己的输入字符串进行解释——th对于OP和未来的读者来说,它的价值更低。@mickmackusa:我已经解释了OP对正则表达式的错误。因为第四只鸟提供了正确的答案,所以我避免了复制它。