js截取文件名不带后缀
利用正则表达式是匹配后缀名
一般文件后缀都为.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截取文件名不带后缀的更多相关文章
- js截取文件名
str = 'C:\fakepath\ll.doc'; str.substring(str.lastIndexOf("\\")+1,str.lastIndexOf(".& ...
- JS截取后缀名,文件全名,非后缀名的方法---收藏(冷饭_)
<script language="javascript" type="text/javascript"> //取整个文件的路径并且把文件名赋给文件 ...
- c#根据绝对路径获取 带后缀文件名、后缀名、文件名
zz C#根据绝对路径获取 带后缀文件名.后缀名.文件名 1.c#根据绝对路径获取 带后缀文件名.后缀名.文件名. string str =" F:\test\Default.aspx& ...
- 【.Net】C# 根据绝对路径获取 带后缀文件名、后缀名、文件名、不带文件名的文件路径
1.c#根据绝对路径获取 带后缀文件名.后缀名.文件名. 1 string str =" F:\test\Default.aspx"; 2 string filename = ...
- 怎么用JS截取字符串中第一个和第二个字母间的部分?
一.JS中用正则判断字符串是否有匹配正则的字符串部分,格式如下: /[a-zA-Z](.*?)[a-zA-Z]/.test('1a123d45678901a2') “.test”前面的部分是正则表达式 ...
- js截取中英文字符串、标点符号无乱码示例解读
<script> function subString(str, len, hasDot) { var newLength = 0; var newStr = ""; ...
- [Ext JS 4] 实战之 带week(星期)的日期选择控件(三)
前言 在 [Ext JS 4] 实战之 带week(星期)的日期选择控件(二) 的最后,有提到一个解决方案. 不过这方案有一个条件 ==> “2. 每年的周数从(1-52), 如果超过52 周 ...
- js截取字符串区分汉字字母代码
js截取字符串并且区分汉字字母,一个汉字辨别为两个字节. function substr(str, len) { if (!str || !len) { return ''; } // 预期计数:中文 ...
- js 截取字符串
转:http://blog.csdn.net/dotnet25/article/details/8331959 字符串:var s = "1,2,3,4,5," 目标:删除最后一个 ...
随机推荐
- hihocoder #1062 : 最近公共祖先·一(小数据量 map+set模拟+标记检查 *【模板】思路 )
#1062 : 最近公共祖先·一 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 小Ho最近发现了一个神奇的网站!虽然还不够像58同城那样神奇,但这个网站仍然让小Ho乐在 ...
- 树莓派保持网络连接shell脚本
源:http://www.jianshu.com/p/96aa26d165c3 (我的简书文章) 故事背景 树莓派3b现在有了板载无线网卡,可以很方便的连接到wifi.但是无线路由器不能保证永远正常工 ...
- Java8初体验(2):Stream语法详解
原文出处: 一冰_天锦 上篇文章Java8初体验(1):lambda表达式语法比较详细的介绍了lambda表达式的方方面面,细心的读者会发现那篇文章的例子中有很多Stream的例子.这些Stream的 ...
- linux应用之用户管理相关命令
1. useradd useradd 命令可以创建一个新的用户帐号,其最基本用法为: useradd 用户名 如输入以下命令: useradd newuser 系统将创建一个新用户 newuser,该 ...
- 【Redis笔记(四)】 Redis数据结构 - list链表
原创作品,转载请标明:http://blog.csdn.net/Xiejingfa/article/details/50573605 经过前面的介绍,我们学习了Redis中string字符串.hash ...
- 编程模式(schema) —— 表驱动法(table-driven)
使用表驱动法,而非繁琐冗长的 if/else, switch case(本身也代表一种代码坏味道),也是替身编程质量的重要手段, 表驱动法是一种编程模式(schema)-- 从表里面查找信息而不使用逻 ...
- C++之pair与make_pair
std::pair主要的作用是将两个数据组合成一个数据,两个数据可以是同一类型或者不同类型. 例如std::pair<int,float> 或者 std::pair<double,d ...
- ajax展示新页面同时传递参数
HTML页面部分代码: <div id="course" hidden></div> HTML页面中ajax代码: var selectType=$(&qu ...
- kvm详细介绍
KVM详解,太详细太深入了,经典 2016-07-18 19:56:38 分类: 虚拟化 原文地址:KVM详解,太详细太深入了,经典 作者:zzjlzx KVM 介绍(1):简介及安装 http:// ...
- themeforest 免费模板
http://www.im286.com/thread-9550365-1-1.html 官网:http://themeforest.net/item/elena-responsive-email-t ...