JavaScript正則表達式的應用非常廣泛,其中包括了浮點型的匹配和校驗。浮點型是指帶小數點的數字,它們通常被用于處理更精確的測量或計算,例如賬務記錄、科學實驗等。而JavaScript正則表達式則可以方便地幫助我們在字符串中找到、提取、匹配或替換這些浮點型數字。
在正則表達式中,可以使用\d匹配任意數字,使用.匹配任意字符(包括小數點),使用+匹配一個或多個相鄰的字符。因此,最簡單粗暴的浮點型匹配方式是:\d+\.\d+
// test.js
let regExp = /\d+\.\d+/g;
let str = 'The price is 25.95, and the total amount is 236.85.';
console.log(str.match(regExp)); // ['25.95', '236.85']
但是,這種方式只能匹配普通的浮點型數字。如果數字使用了科學計數法,則會失敗。例如:1.23e+10就是一個浮點型數字,但并不能被上述正則表達式匹配。為了解決這個問題,可以加入對科學計數法的支持:\d+(?:\.\d+)?(?:e[+-]?\d+)?
let regExp2 = /\d+(?:\.\d+)?(?:e[+-]?\d+)?/g;
let str2 = 'Speed of light is 299792458 m/s, and Avogadro constant is 6.02e23/mol.';
console.log(str2.match(regExp2)); // ['299792458', '6.02e23']
上述正則表達式的思路如下:一個數字有可能由以下三個部分組成:整數部分、小數部分、科學計數法部分。其中整數部分必須存在,小數部分和科學計數法部分可以選有可無。整個匹配過程相當于先匹配整數部分,然后匹配小數部分(可選),最后匹配科學計數法部分(也可選)。由于小數部分和科學計數法部分都使用了?:符號,因此它們不會被捕獲到分組中。
除了匹配浮點型數字,正則表達式在其他場景中也可以起到很大的作用。例如,可以匹配郵件地址(\w+@\w+\.\w+)、電話號碼(\d{3}-\d{8}|\d{4}-\d{7})、身份證號碼(\d{17}[\dxX]|\d{14})等等。這些都是正則表達式的經典應用案例,可以幫助我們在處理字符串時事半功倍。