我对正则表达式还很陌生,需要一些帮助。
最终目标是捕获文件名中句点之前的最终数字序列。例如,我想从“test687.09ew0_d04.jpg”中提取“04”。另一个例子是来自“039lksdkl3200dj787.jpg”的“787”。
到目前为止,这是我的正则表达式:
/([0-9]+)(?:\.[\s\S]+)$/
我的理解是 ([0-9]+)
匹配从 1 到 9 的任意数量的数字。
(?:\.[\s\S]+)
指定数字后必须跟一个点和任意数量的字符,?:
标记它不应该被捕获,而是用于匹配。
最后的 $
意味着只有当要求在字符串的末尾而不是其他地方时才匹配。
但是,它不起作用。非捕获组在我的匹配中返回,正则表达式不要求匹配位于字符串的末尾。
最佳答案
你可以使用 negated character class比如[^.]
来匹配文件名末尾的所有非.
字符,[^.]+$
。
然后匹配文字.
字符,\.
,并捕获前面的数字,(\d+)
。
(\d+)\.[^.]+$
上面的表达式将在字符串 test687.09ew0_d04.jpg
- example here 中捕获 04
.
关于Javascript正则表达式在文件末尾提取计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41915642/