利用正則表達(dá)式是匹配后綴名
一般文件后綴都為.xxx,也就是說從尾部匹配的話首先是字母,接著應(yīng)該有一個(gè).
那么我們就開始寫正則表達(dá)式
利用在線工具 方便我們編寫邊測試
一般都是小寫字母,所以我們用[a-z],個(gè)數(shù)一個(gè)是1到無限{1,},然后從尾部匹配開始$
所以我們從后面匹配一串字母的正則表達(dá)式長這樣[a-z]{0,}

測試一下
我們還差一個(gè).,所以我們再加上去
最終正則表達(dá)式是這樣的\.{1}[a-z]{1,}$,那個(gè)反斜杠是代表轉(zhuǎn)義,我記得是這樣的

成功匹配到了
那我們來實(shí)際測試一下
var pattern = /\.{1}[a-z]{1,}$/, // 用js的話用‘/’斜杠去標(biāo)識(shí)正則表達(dá)式
str = 'JSON必知必會(huì).pdf';
console.log(pattern.test(str)); // true
我要實(shí)現(xiàn)的是一串帶后綴的文件名,而我只要文件名不要后綴
我們上面的例子用的是test()方法,它返回值是布爾值。表示字符串是否匹配成功。
所以不適用我這個(gè)需求,我想肯定有其它方法。
我查到test()方法是RegExp 對象的,該對象還有exec()方法。
exec()方法返回一個(gè)數(shù)組,其中存放匹配的結(jié)果。如果未找到匹配,則返回值為 null。
那我們把上面的例子的test()方法改為exec()方法

得到的是這個(gè)結(jié)果
那我們就可以知道,返回值這個(gè)數(shù)組[0]下標(biāo)是匹配到的文本
index是匹配到的文本在匹配字符串里頭的下標(biāo),反正就是上面那個(gè)小數(shù)點(diǎn)的位置
而我要拿的是“JSON必知必會(huì)”這個(gè),知道下標(biāo)那就可以用字符串截取slice()方法
最終代碼實(shí)現(xiàn)
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;
}
}

最終效果