我试图从字符串开头仅获取数字。

我有以下代码从字符串中获取数字和文本。



var unitData = '(135 g)'  // it may be 0.135 or .135
var unitValue = Number(unitData.match(/.?\d+\.?\d*/).toString());
var unitName = unitData.match(/[A-Za-z]+/g) || '';

console.log(unitValue);
console.log(unitName);





它给NaNunitValue。如果数字位于字符串的第一个位置,则可以正常工作。

最佳答案

在您的正则表达式中也选择了括号,这是一个小错误。

基本上是返回此:


  '(135


我已经更新了正则表达式。请尝试以下方法:



var unitData = '(135 g)'
var unitValue = Number(unitData.match(/\d*\.?\d+/)[0]);
console.log(unitValue);
unitData = '(.135 g)'
unitValue = Number(unitData.match(/\d*\.?\d+/)[0]);
 console.log(unitValue);
unitData = '(135.42 g)'
unitValue = Number(unitData.match(/\d*\.?\d+/)[0]);
unitName = unitData.match(/[A-Za-z]+/g) || '';

console.log(unitValue);
console.log(unitName);





希望这可以帮助 :)

关于javascript - Javascript正则表达式从字符串中给出NaN,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50920708/

10-13 02:23