我有这种格式的字符串:
6b255c1c689e2e7ee88e6d5d8ab10e9b_307_17234.jpg
8b342878cb8d848608d422a2c02b5e32_7_240723.jpg
07e8e2376d12e2d20a1e4c2159569c43_243_141599.jpg
你如何得到最后两组数字?
例如, 在
07e8e2376d12e2d20a1e4c2159569c43_243_141599.jpg
我想得到:
07e8e2376d12e2d20a1e4c2159569c43_ 243_141599 .jpg 只有数字以粗体显示下划线
有可能?? .....
我尝试过: var getDigts = str.split('_'), //this way is ok but I have to split again the getDigts[2] as in str2.split(".") to get rid of the DOT.
使用普通split
,是否有一种变通方法或比REGEX
加倍更快的内容?
THX
修改
我尝试使用str.match(/(\d+_\d+).jpg/)[1]
按照@Michael Best的建议...刚刚经历过一次大的错误:原因是因为我循环遍历每个字符串以获取数字...现在,应该有类似的东西:
6b255c1c689e2e7ee88e6d5d8ab10e9b_307_17234.jpg 8b342878cb8d848608d422a2c02b5e32_7_240723.jpg 649ff5658ad274d8cee67b1f6d34600c_90_182456.png 07e8e2376d12e2d20a1e4c2159569c43_243_141599.jpg
请注意: .png
行。是否有REGEX同时匹配.jpg
和/或.png
?
我尝试从jpg
中移除.jpg
,例如str.match(/(\d+_\d+)./)[1]
,但是当涉及到字符串时,这会失败:07e8e2376d12e2d20a1e4c2159569c43_243_141599.jpg
它返回
07e8e2376d12e2d20a1e4c 2159569c43_243 _141599.jpg
而不是
07e8e2376d12e2d20a1e4c2159569c43_的 243_141599 .JPG
非常感谢任何帮助...
答案 0 :(得分:2)
这是一个快速而肮脏的正则表达式:
var nums = str.match(/(\d+_\d+)\.\w+$/)[1];
答案 1 :(得分:2)
您可以尝试:
str.match(/(\d+_\d+).JPG|PNG/i)[1]
当您说:.JPG|.PNG
并在最后添加i
时,您告诉脚本以不区分大小写的方式查找这些扩展名。
因此它会匹配.jpg
和.png
希望有所帮助
答案 2 :(得分:2)
你应该试试这个正则表达式。
str.match(/(\d+_\d+)\.(?:jpg|png)/i)[1]
.
也必须进行转义。 .
是几乎所有角色的通配符。如果没有逃脱,那么
1233242_34243_3224_png_3424_34342.jpg
应该给出错误的匹配34243_3224
。
由于使用不区分大小写i
- 标记 PNG 和 png (JPG,jpg)将匹配为扩展名。