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
來源:簡書
簡書著作權歸作者所有,任何形式的轉載都請聯系作者獲得授權並注明出處。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM