利用正則表達式是匹配后綴名
一般文件后綴都為.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
來源:簡書
簡書著作權歸作者所有,任何形式的轉載都請聯系作者獲得授權並注明出處。