利用正则表达式是匹配后缀名

一般文件后缀都为.xxx,也就是说从尾部匹配的话首先是字母,接着应该有一个.
那么我们就开始写正则表达式
利用在线工具 方便我们编写边测试
一般都是小写字母,所以我们用[a-z],个数一个是1到无限{1,},然后从尾部匹配开始$
所以我们从后面匹配一串字母的正则表达式长这样[a-z]{0,}

 
测试一下

我们还差一个.,所以我们再加上去
最终正则表达式是这样的\.{1}[a-z]{1,}$,那个反斜杠是代表转义,我记得是这样的

 
成功匹配到了

那我们来实际测试一下

var pattern = /\.{1}[a-z]{1,}$/,  // 用js的话用‘/’斜杠去标识正则表达式
str = 'JSON必知必会.pdf';
console.log(pattern.test(str)); // true

我要实现的是一串带后缀的文件名,而我只要文件名不要后缀

我们上面的例子用的是test()方法,它返回值是布尔值。表示字符串是否匹配成功。
所以不适用我这个需求,我想肯定有其它方法。
我查到test()方法是RegExp 对象的,该对象还有exec()方法。
exec()方法返回一个数组,其中存放匹配的结果。如果未找到匹配,则返回值为 null。
那我们把上面的例子的test()方法改为exec()方法

 
得到的是这个结果

那我们就可以知道,返回值这个数组[0]下标是匹配到的文本
index是匹配到的文本在匹配字符串里头的下标,反正就是上面那个小数点的位置
而我要拿的是“JSON必知必会”这个,知道下标那就可以用字符串截取slice()方法

最终代码实现

function splitFileName(text) {
var pattern = /\.{1}[a-z]{1,}$/;
if (pattern.exec(text) !== null) {
return (text.slice(0, pattern.exec(text).index));
} else {
return text;
}
}

作者:鐘濤
链接:https://www.jianshu.com/p/aac2a4a826ec
来源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

js截取文件名不带后缀的更多相关文章

  1. js截取文件名

    str = 'C:\fakepath\ll.doc'; str.substring(str.lastIndexOf("\\")+1,str.lastIndexOf(".& ...

  2. JS截取后缀名,文件全名,非后缀名的方法---收藏(冷饭_)

    <script language="javascript" type="text/javascript"> //取整个文件的路径并且把文件名赋给文件 ...

  3. c#根据绝对路径获取 带后缀文件名、后缀名、文件名

    zz   C#根据绝对路径获取 带后缀文件名.后缀名.文件名 1.c#根据绝对路径获取 带后缀文件名.后缀名.文件名. string str =" F:\test\Default.aspx& ...

  4. 【.Net】C# 根据绝对路径获取 带后缀文件名、后缀名、文件名、不带文件名的文件路径

    1.c#根据绝对路径获取 带后缀文件名.后缀名.文件名.   1 string str =" F:\test\Default.aspx"; 2 string filename = ...

  5. 怎么用JS截取字符串中第一个和第二个字母间的部分?

    一.JS中用正则判断字符串是否有匹配正则的字符串部分,格式如下: /[a-zA-Z](.*?)[a-zA-Z]/.test('1a123d45678901a2') “.test”前面的部分是正则表达式 ...

  6. js截取中英文字符串、标点符号无乱码示例解读

    <script> function subString(str, len, hasDot) { var newLength = 0; var newStr = ""; ...

  7. [Ext JS 4] 实战之 带week(星期)的日期选择控件(三)

    前言 在 [Ext JS 4] 实战之 带week(星期)的日期选择控件(二) 的最后,有提到一个解决方案. 不过这方案有一个条件  ==> “2. 每年的周数从(1-52), 如果超过52 周 ...

  8. js截取字符串区分汉字字母代码

    js截取字符串并且区分汉字字母,一个汉字辨别为两个字节. function substr(str, len) { if (!str || !len) { return ''; } // 预期计数:中文 ...

  9. js 截取字符串

    转:http://blog.csdn.net/dotnet25/article/details/8331959 字符串:var s = "1,2,3,4,5," 目标:删除最后一个 ...

随机推荐

  1. git branch 分支创建时间排序

    git branch日期排序 vi ~/.gitconfig [alias]lb = !"for k in `git branch -a|perl -pe s/^..//`;do echo ...

  2. delphi如何让程序最小化到任务栏(使用Shell_NotifyIcon API函数)

    现在很多的应用程序都有这样一种功能,当用户选择最小化窗口时,窗口不是象平常那样最小化到任务栏上,而是“最小化”成一个任务栏图标.象FoxMail 3.0 NetVampire 3.0等都提供了这样的功 ...

  3. HDU1102 Constructing Roads —— 最小生成树

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1102 题解: 纯最小生成树,只是有些边已经确定了要加入生成树中,特殊处理一下这些边就可以了. krus ...

  4. iOS description

    description:重写对象的这个方法,会在打印的时候显示出自定义的description中的内容debugDescription:方法是在开发者在调试器中以控制台命令打印对象时才调用的. 在NS ...

  5. opengl in medical imaging

    医学可视化 http://schorsch.efi.fh-nuernberg.de/roettger/index.php/Lectures/MedicalVisualization http://ww ...

  6. linux下把命令执行的结果输出

    我们知道在linux下当我们想把文字用命令输入到一个文本下时可以用echo命令 例:echo "nihao" > /z.txt   同样当我们想把命令执行的结果也输入到一个文 ...

  7. win7下使用source insight,没有Courier字体

    http://hi.baidu.com/raoxj/item/0e3a3a3b2461c5be134b14fa 1. “控制面板:--->“字体”--->找到Courier New(建议用 ...

  8. 用mingw-w64 编译 x64 位的ffmpeg

    http://blog.sina.com.cn/s/blog_6125d067010168dt.html 工作中用到了ffmpeg x64. 发现编译出来x64的ffmpeg,很不容易.特记录下来.原 ...

  9. centos6.5安装jdk

    1.查看Linux环境自带JDK 使用命令:# rpm -qa|grep gcj 显示内容其中包含相应信息# java-x.x.x-gcj-compat-x.x.x.x-xxjpp# java-x.x ...

  10. Careless Me

    我在百度知道上提了一个问题: 如图我在menu.xml里试图加一个search的按钮,但我从网页上复制了图中第二个item里的代码,运行的时候,这个item却总是出现在overflow(下拉菜单)里面 ...