正则表达式:必须以破折号之间的第一个匹配的10个数字结束

时间:2022-10-29 21:15:28
2017-34-5-1503650477-547-1234567890-coco.jpg

I want to match 2017-34-5-1503650477-

我要匹配2017-34-5-1503650477-

2017-34-5-1503650477-toast.jpg

I want to match 2017-34-5-1503650477-

我要匹配2017-34-5-1503650477-

2017-240-1503650477-toast.jpg

I want to match 2017-240-1503650477-

我要匹配2017-240-1503650477-

I'm trying to use /\b^(.*)\-\d{10}\-\b/ but on the first example it matches 2017-34-5-1503650477-547-1234567890- wheras I want to stop here : 2017-34-5-1503660477-

我正在尝试使用/\ b^(.*)\-\d{10}\- \ b,但在第一个例子中它匹配2017-34-5-1503650477-547-1234567890-我要停止这里:2017-34-5-1503660477-

2 个解决方案

#1


1  

You should add the laziness modifier:

你应该添加懒惰修饰符:

Note the question mark in (.*?)

注意(。*?)中的问号

\b^(.*?)\-\d{10}\-\b

Here is a regex101 example:
https://regex101.com/r/nQfsE9/1

这是一个regex101示例:https://regex101.com/r/nQfsE9/1

#2


1  

You could use:

你可以使用:

^(\d{1,9}-)+\d{10}

Where:

  • (\d{1,9}-)+ pairs of 1-9 digits and -
  • (\ d {1,9} - )+ 1-9位数对和 -

  • \d{10} followed by 10 digits
  • \ d {10}后跟10位数字

example

#1


1  

You should add the laziness modifier:

你应该添加懒惰修饰符:

Note the question mark in (.*?)

注意(。*?)中的问号

\b^(.*?)\-\d{10}\-\b

Here is a regex101 example:
https://regex101.com/r/nQfsE9/1

这是一个regex101示例:https://regex101.com/r/nQfsE9/1

#2


1  

You could use:

你可以使用:

^(\d{1,9}-)+\d{10}

Where:

  • (\d{1,9}-)+ pairs of 1-9 digits and -
  • (\ d {1,9} - )+ 1-9位数对和 -

  • \d{10} followed by 10 digits
  • \ d {10}后跟10位数字

example