Регулярное выражение Javascript, соответствующее десятичному знаку, загрязненному другими символами

#javascript #regex

#javascript #регулярное выражение

Вопрос:

Я пытаюсь сопоставить первый набор цифр в следующих примерах.

 some stuff (6 out of 10 as a rating) 
  

необходимо вернуть 6

 some stuff (2.3 out of 10 as a rating)    
  

необходимо вернуть 2.3

 some stuff (10 out of 10 as a rating)  
  

необходимо вернуть 10

Кроме того, иногда строка не будет иметь числа

 some stuff but nothing else
  

Ответ №1:

 var match = /d (.d )?/.exec("some stuff (10 out of 10 as a rating)");
alert(match[0]);
  
  • d соответствует любому числителю, 0-9
  • означает 1 или более
  • . соответствует a .
  • ? означает 0 или 1

таким образом, в целом это означает любое количество цифр (0-9), за которым необязательно следует десятичная точка, за которой следует 1 или более цифр.

Как функция:

 var getFirstNumber = function(input){
     var match = /d (.d )?/.exec(input);
    return match[0];
};
  

Ответ №2:

Вы можете попробовать это 'some stuff (2.3 out of 10 as a rating)'.match(/D*(d.?(d)*)/)[1]