我想分割一些特定的字符表達式。我知道我們可以用正則表達式使用String.split(),所以這是我第一次的猜測:用正則表達式分割JS字符串
function expressionSplit([input]) {
let regex = /([(),;.]+)/g;
let arr = input.split(regex);
arr.forEach(item => console.log('item: ' + item));
}
expressionSplit(['let sum = 1 + 2;if(sum > 2){\tconsole.log(sum);}']);
現在,這是遠不及我所期待的,所以我做了一些更多的閱讀和發現與我不同,人們使用split()和正則表達式沒有問題。不解,我嘗試這樣做:
function expressionSplit([input]) {
let regex = /([(),;.]+)/g;
let arr = input.replace(regex, '|').split('|');
arr.forEach(item => console.log('item: ' + item));
}
expressionSplit(['let sum = 1 + 2;if(sum > 2){\tconsole.log(sum);}']);
出乎我的意料 - 它的工作居多。爲什麼會發生?我認爲這是一種JS典型的奇怪現象,因爲它對我來說根本沒有意義,另外,正如我所說 - 其他人似乎使用split()與正則表達式沒有任何問題。另外我怎樣才能分裂'\ T'(選項卡)。給正則表達式添加'\ t'似乎什麼都不做,'\\ t'只匹配't'。謝謝。
感謝您的答案 - 它的工作原理。我沒有抱怨,我對JS沒有任何意義,所以你不必去防守:D。但是你不能否認像JS那樣靈活 - 與你的標準編程語言相比,它有一些非常有趣的,即使不是奇怪的特徵。 – Alex
對不起,要防守。 JavaScript一直是一個出氣筒,我只是略過它而已。我不同意JavaScript比其他語言具有更特殊的「怪癖」。每種語言都有它的奇怪,制度化的特質 –
完全披露:我也曾經是一個「仇敵」。但那是在我真正瞭解這門語言之前。如果JavaScript在向後兼容性方面存在錯誤(我在看着你,'typeof'),那麼鑑於它的目的和歷史,你真的可以責怪它嗎? –