文件扩展的正则表达式

时间:2015-12-13 20:25:27

标签: html regex

我想知道是否有一个正则表达式,我可以用它来查找使用基本html的文件扩展名。

现在我有

<img src="images/pimage/{$item['item_id']}/small.jpg">

问题不是我的所有图片都以.jpg结尾。

所以我想要一个正常的表达式,可以找到所有以小开头并以.jpg.jpeg.JPG.png,{{1}结尾的图像}等等......小写和大写。

是否有一个简单的正则表达式,我可以在“小”之后找到所有匹配的文件?

我不确定我做错了什么,但是当我尝试任何建议时,输出只显示正则表达式,而不是预期的结果。这是我目前的代码

.gif

知道我做错了什么?

3 个答案:

答案 0 :(得分:2)

正则表达式捕获以&#34;小&#34;开头的所有图像并以您列出的任何扩展名结束:

/^small.*\.(jpe?g|gif|png|tiff)$/i

术语解释:

^ - 以

开头

.* - 匹配任何字符的0或更多

\. - 匹配一段时间; \是一个转义字符,表示后面的字符应按字面解释,这是必要的,因为字符.?+等在正则表达式中有意义否则。

(a|b|c) - 匹配括号内的所有内容(例如,如果下一个字符为abc则匹配)

? - 表示前面的字符可能显示为零或一次(例如,jpe?g匹配&#34; jpeg&#34;因为它包含一个&#39; e&#39;,并匹配&#34; jpg&#34;因为&#39; e&#39;在该位置出现零次)

$ - 表示要匹配的模式结束

/your-regex-pattern/i - 不区分大小写的匹配(大写和小写)

如果您想了解有关正则表达式中模式匹配的更多信息,请查看这个方便的备忘单:http://www.cheatography.com/davechild/cheat-sheets/regular-expressions/

答案 1 :(得分:1)

也许,这对你有帮助吗?

/\.\w+$/

(输入字符串末尾的点号和1(或更多)单词类字符)

/\.[a-z]+$/i 
/\.[a-zA-Z]+$/

(输入字符串末尾的点号和1(或更多)字母)

/\.[a-z]{1,4}$/i
/\.[a-zA-Z]{1,4}$/

(点符号和输入字符串末尾的1到4个字母)

请注意,所有选项在输出中都有一个点符号 所有正则表达式都不区分大小写,因为有一个i - 标志。

另外,遗憾的是,JavaScript不支持lookbehind,因此regexp

/(?<=small\.)[a-z]+/i

small.子串后面的一个或多个字母)

不起作用;但是,我认为,在这种情况下,这将是最好的正则表达式。

答案 2 :(得分:0)

根据this page from www.Regular-Expressions.info,区分大小写和其他类似的匹配标志/选项通常在编程语言中实现,而不是直接在模式本身中实现。但是,如果该语言没有提供传递匹配标志/选项的选项,则上面链接的RegEx信息页面可以在模式中指定不区分大小写的选项。

要将模式指定为不区分大小写,可以将(?i)指定为不区分大小写的部分的开头,将(?-i)指定为不区分大小写的部分的结尾。

对于您的具体情况,这意味着以下RegEx模式可能有效:\.(?i)(png|gif|jpg|jpeg|ico|bmp|svg|tiff)(?-i)$显然,您可能希望修改此模式以满足您添加或删除图像文件类型的需要。

在此模式中:\.表示文字句点字符(.); (?i)关闭所有后续部分的区分大小写; (png|gif|jpg|jpeg|ico|bmp|svg|tiff)表示选项列表,这意味着文件扩展名必须是列表中的一个(并且只有一个)选项; (?-i)开启区分大小写;并且$标记字符串的结尾,这意味着文件扩展名后面不能有任何字符。

如果您使用的语言支持以另一种方式指定匹配标志,那么我建议您以语言建议的任何方式指定它们;但是,根据我上面链接的RegEx信息页面,这是在模式中指定它们的正确方法(,如果您决定向模式添加更多内容,则有利于不使整个模式不区分大小写)。

编辑:作为警告,看起来Javascript不支持在模式本身内打开和关闭区分大小写(使用(?i)(?-i))。因此,如果您正在使用Javascript,则必须通过将/i设置为表达式末尾的标记或使用以下模式来解决此问题:\.([pP][nN][gG]|[jJ][pP][eE]?[gG]|[gG][iI][fF]|[iI][cC][oO]|[tT][iI][fF]{1,2})$。在此模式中,扩展名中的每个字母都以大写和小写形式指定。这允许模式匹配文件扩展名,无论它写入的是什么情况,同时仍然允许表达式的其余部分区分大小写。