正则表达式获得字符串值不一致的长度

时间:2016-01-12 02:47:25

标签: javascript regex

2f34435-something.jpg
4t44234-something.jpg
5465g67-something.jpg

我上面有3个字符串,没有使用拆分,如何在破折号前获取正则值?虽然字符串的长度不一致..

4 个答案:

答案 0 :(得分:2)

一个选项是匹配字符串开头的一个或多个非短划线字符:

^[^-]+
  • ^ - 表示字符串开头的锚点
  • [^-] - 字符集匹配所有非破折号字符。
  • + - 一次或多次出现非短划线字符。

例如:

'2f34435-something.jpg'.match(/^[^-]+/);
// ["2f34435"]

使用.split()方法,您只需要检索第一个匹配项:

'2f34435-something.jpg'.split('-')[0];
// "2f34435"

答案 1 :(得分:1)

你可以使用......

/^(.+?)-/gm

将捕获所有3个(或尽可能多的)

您可以在此处查看https://regex101.com/r/gD5sU2/2

如果你得到 - 在文件名的其余部分......

,这也会处理

如: -

2f34435-something-else.jpg
4t44234-something.jpg
5465g67-something.jpg

答案 2 :(得分:0)

([a-z0-9]+)-[a-z0-9]+.jpg匹配每个字符串,第一组返回的字符串将与短划线前的文本匹配。

答案 3 :(得分:0)

使用预测来做到这一点

/^.+?(?=-)/gm

https://regex101.com/r/mW5bO7/2