Javascript Regex获取的字符串长度不一致';s值

Javascript Regex获取的字符串长度不一致';s值,javascript,regex,Javascript,Regex,上面说我有3个字符串,如果不使用split,我如何在破折号之前使用正则表达式来获取值?字符串的长度不一致。一个选项是匹配字符串开头的一个或多个非破折号字符: 2f34435-something.jpg 4t44234-something.jpg 5465g67-something.jpg ^-表示字符串开头的锚点 [^-]-字符集,用于匹配所有非破折号字符 +-一个或多个非破折号字符 例如: ^[^-]+ 使用.split()方法,您只需检索第一个匹配项: '2f34435-someth

上面说我有3个字符串,如果不使用split,我如何在破折号之前使用正则表达式来获取值?字符串的长度不一致。一个选项是匹配字符串开头的一个或多个非破折号字符:

2f34435-something.jpg
4t44234-something.jpg
5465g67-something.jpg
  • ^
    -表示字符串开头的锚点
  • [^-]
    -字符集,用于匹配所有非破折号字符
  • +
    -一个或多个非破折号字符
例如:

^[^-]+
使用
.split()
方法,您只需检索第一个匹配项:

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

一个选项是在字符串开头匹配一个或多个非破折号字符:

2f34435-something.jpg
4t44234-something.jpg
5465g67-something.jpg
  • ^
    -表示字符串开头的锚点
  • [^-]
    -字符集,用于匹配所有非破折号字符
  • +
    -一个或多个非破折号字符
例如:

^[^-]+
使用
.split()
方法,您只需检索第一个匹配项:

'2f34435-something.jpg'.match(/^[^-]+/);
// ["2f34435"]
([a-z0-9]+)-[a-z0-9]+。jpg
匹配这些字符串中的每一个,并且从第一组返回的字符串将匹配破折号之前的文本。

([a-z0-9]+)-[a-z0-9]+。jpg
匹配这些字符串中的每一个,并且从第一组返回的字符串将匹配破折号之前的文本。

您可以使用

'2f34435-something.jpg'.split('-')[0];
// "2f34435"
这将捕获所有3个(或尽可能多的)

你可以在这里看到它的作用

如果您在文件名的其余部分中得到-in,这也会处理

例如:-

/^(.+?)-/gm
你可以用

'2f34435-something.jpg'.split('-')[0];
// "2f34435"
这将捕获所有3个(或尽可能多的)

你可以在这里看到它的作用

如果您在文件名的其余部分中得到-in,这也会处理

例如:-

/^(.+?)-/gm

使用“向前看”来完成此操作

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

使用“向前看”来完成此操作

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

加号在这里做什么?我们需要支架吗?。是任意字符,+是1或更多括号表示要捕获的部分我发现
^
不是必需的。哦,示例中没有,如果文件名中有其他字符,则应该处理,但这不太有效。。。。我会更新我的答案加号在这里做什么?我们需要支架吗?。是任意字符,+是1或更多括号表示要捕获的部分我发现
^
不是必需的。哦,示例中没有,如果文件名中有其他字符,则应该处理,但这不太有效。。。。我将更新我的答案如果有第二个破折号,这个将中断。如果有第二个破折号,这个将中断。为什么不使用split?您不需要使用正则表达式,使用字符串方法<代码>str.substring(0,str.indexOf('-')为什么不想使用split?不需要使用regex,只需要使用string方法<代码>str.substring(0,str.indexOf('-')