Php 自定义模式的正则表达式问题
下面是模式示例: AB17-12345 所以前2个字符是字母字符,第3和第4个是数字,后面跟一个“破折号”字符,然后跟5个数字 这就是我现在拥有的: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} 匹配两个数
"/[^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对正则表达式的错误。因为第四只鸟提供了正确的答案,所以我避免了复制它。