我想知道是否有一个正则表达式,我可以用它来查找使用基本html的文件扩展名。
现在我有
<img src="images/pimage/{$item['item_id']}/small.jpg">
问题不是我的所有图片都以.jpg结尾。
所以我想要一个正常的表达式,可以找到所有以小开头并以.jpg
,.jpeg
,.JPG
,.png
,{{1}结尾的图像}等等......小写和大写。
是否有一个简单的正则表达式,我可以在“小”之后找到所有匹配的文件?
我不确定我做错了什么,但是当我尝试任何建议时,输出只显示正则表达式,而不是预期的结果。这是我目前的代码
.gif
知道我做错了什么?
答案 0 :(得分:2)
正则表达式捕获以&#34;小&#34;开头的所有图像并以您列出的任何扩展名结束:
/^small.*\.(jpe?g|gif|png|tiff)$/i
术语解释:
^
- 以
.*
- 匹配任何字符的0或更多
\.
- 匹配一段时间; \
是一个转义字符,表示后面的字符应按字面解释,这是必要的,因为字符.
,?
,+
等在正则表达式中有意义否则。
(a|b|c)
- 匹配括号内的所有内容(例如,如果下一个字符为a
或b
或c
则匹配)
?
- 表示前面的字符可能显示为零或一次(例如,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})$
。在此模式中,扩展名中的每个字母都以大写和小写形式指定。这允许模式匹配文件扩展名,无论它写入的是什么情况,同时仍然允许表达式的其余部分区分大小写。