如何编写与可选子字符串匹配的PHP正则表达式?

时间:2011-04-12 18:50:36

标签: php preg-match substring

好的,现在I've got two problems

我有一个文件名列表。其中一些文件名可能包含HTML十六进制颜色引用。像#11AACC一样。另外,我只对图像文件感兴趣(扩展jpg,jpeg,png,gif和bmp)。所以我想要一个匹配的正则表达式,如果文件扩展名是上面的一个,另外,如果字符串中的任何地方都有HTML颜色引用,它也会被捕获。如果有多个引用,我不关心哪一个被捕获(应该只有一个),但应该捕获一个。不止一个也可以,我可以忽略第一个以外的其余部分。哦,整个事情应该是不区分大小写的,但这是最不用担心的。

如有必要,我可以限制颜色参考的位置。但是我希望它在扩展之前是正确的,因为否则命名这些文件会很尴尬。

我正在尝试执行/(#[a-fA-F]{6})?\.(?:jpeg|jpg|png|gif|bmp)$/i/(#[a-fA-F]{6})?.*\.(?:jpeg|jpg|png|gif|bmp)$/i之类的操作,但它不会捕获颜色参考。

1 个答案:

答案 0 :(得分:2)

是因为你的角色类

[a-fA-F]

表示十六进制数字是缺少数字?

尝试

[a-fA-F0-9]

由于您使用i修饰符进行案例敏感性,您可以使用:

[a-f0-9]