JSFiddle - React, Tailwind, and code Playground

HTML

<div id="info"></div>

JavaScript

function ddmToDeg(ddm) { 
        if (!ddm) { 
            return Number.NaN; 
        } 
        var neg= ddm.match(/(^\s?-)|(\s?[SW]\s?$)/)!=null? -1.0 : 1.0; 
        ddm= ddm.replace(/(^\s?-)|(\s?[NSEW]\s?)$/,''); 
        ddm= ddm.replace(/\s/g,''); 
    var parts=ddm.match(/(\d{1,3})[.,°d]?(\d{0,2}(?:\.\d+)?)[']?/); 
            //dms.match(/(\d{1,3})[.,°d]?(\d{0,2})[']?(\d{0,2})[.,]?(\d{0,})(?:["]|[']{2})?/);
        if (parts==null) { 
            return Number.NaN; 
        } 
        // parts: 
        // 0 : degree 
        // 1 : degree 
        // 2 : minutes 


        var d= (parts[1]?         parts[1]  : '0.0')*1.0; 
        var m= (parts[2]?         parts[2]  : '0.0')*1.0; 
        var dec= (d + (m/60.0))*neg; 
        return dec; 
    }

//test case #1
var result = ddmToDeg('77° 50.51086497');
//test case #2
result += "<br>" + ddmToDeg('77 50.51086497');
//test case #3
result += "<br>" + ddmToDeg('77   50.51086497');
//test case #4
result += "<br>" + ddmToDeg('-113° 40.54687527');
//test case #5
result += "<br>" + ddmToDeg('-113 40.54687527');
//test case #6
result += "<br>" + ddmToDeg('-113  40.54687527 ');



$("#info").html(result);