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

一般文件后缀都为.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. 阿里妈妈-RAP项目的实践(2)

    接口详情 (id: 32872) Mock数据 接口名称 datalist1 请求类型 get 请求Url /datas/list1 接口描述 数据列表 请求参数列表 变量名 含义 类型 备注 响应参 ...

  2. 7-10 社交网络图中结点的“重要性”计算(30 point(s)) 【并查集+BFS】

    7-10 社交网络图中结点的"重要性"计算(30 point(s)) 在社交网络中,个人或单位(结点)之间通过某些关系(边)联系起来.他们受到这些关系的影响,这种影响可以理解为网络 ...

  3. querySelectorAll和getElementsBy 系列比较

    querySelectorAll 相比下面这些方法有什么区别? (1)getElementsByTagName (2)getElementsByClassName (3)getElementsByNa ...

  4. 数据结构之 字符串---字符串匹配(kmp算法)

    串结构练习——字符串匹配 Time Limit: 1000MS Memory limit: 65536K 题目描述   给定两个字符串string1和string2,判断string2是否为strin ...

  5. CSU - 1529 Equator —— DP 最大连续和子序列

    题目链接:http://acm.csu.edu.cn/csuoj/problemset/problem?pid=1529 题解: 一个加强版的最大连续和子序列,序列可以从末尾元素转到首元素. 分两种情 ...

  6. jinja 多值合并

    示例 {% for node in groups["db"] %} {{ node | join("") }}:5672 {% if not loop.last ...

  7. svg矢量图制作工具(Sketsa SVG Editor) v7.1.1 中文免费版

    下载地址:https://www.jb51.net/softs/555253.html Sketsa SVG Editor中文版是一款强大好用的矢量图绘制工具,该工具的最大特色就是集成了中文语言,且支 ...

  8. hdu 1361.Parencodings 解题报告

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1361 题目意思: 根据输入的P-sequence , 输出对应的W-sequence.   P-se ...

  9. [原创]java对word文档的在线打开

    一.材料准备 百度一下:PageOffice,从官网下载PageOffice for Java.压缩包文件: 二. 实现步骤: 1. 打开“集成文件”目录,拷贝“WEB-INF\lib”目录中的pag ...

  10. ios系统的特点

    iOS优势 1). 比较稳定,因为他是一个完全封闭的系统,不开源,但是这个系统有他自己严格管理体系,比如app store的app应用:他有自己的评审规则,另外很多软件是需要收费的,这在一定程度上也说 ...