正则表达式仅在字符串以目标结尾时匹配

74

我需要一个正则表达式,仅当字符串以我要查找的目标结尾时才匹配。我需要定位一个具有特定扩展名的文件,问题是该扩展名也出现在其他文件中。例如,我有两个文件的名称

B82177_2014-07-08T141507758Z.ccf

B82177_2014-07-08T141507758Z.ccf.done

我只想获取这些中的第一个,我的模式是:

.*\.ccf
但这会抓取两者。任何建议都将不胜感激,我是正则表达式的新手。
3个回答

124

使用 $ 结束符:(参考链接)

.*\.ccf$

这将匹配任何以.ccf结尾的字符串,或在多行模式下,任何以.ccf结尾的行。


如果文件扩展名后面有查询字符串怎么办? - Abraham Brookes
@AbrahamBrookes 这个问题特别询问以已知字符序列结尾的字符串。如果这不是您的用例,您需要更具体地说明您实际需要什么。请随意提问(但请注意对于正则表达式问题,您真的应该解释您已经尝试了什么)。 - p.s.w.g

23

$ 用于匹配字符串的结尾。 可以像这样使用


"string"$

喜欢

xyz$

如果你想以 xzy 结尾


1

VanilaJS 函数基础示例

function isValidUrl(x){
  let expression = /[-a-zA-Z0-9@:%._\+~#=]{1,256}\.[a-zA-Z0-9()]{1,6}\b([-a-zA-Z0-9()@:%_\+.~#?&//=]*)?/gi;
  let regex = new RegExp(expression);
  
  return x.match(regex) ? true : false
  
}

console.log( isValidUrl('www.domain.com') ) // true

console.log( isValidUrl('nothing') ) // false


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接