const regex = /^(([NnSs+-])?([0-8]?\d(\.\d*)?|90(\.0*)?)([°˚º^~*NnSs+-])*)([,:;\s|\/\\-]+)(([EeWw+-])*([0]?\d?\d(\.\d*)?|1[0-7]\d(\.\d*)?|180(\.0*)?)[°˚º^~*]*([EeWw+-])*)[\s]*$/mg;
// Alternative syntax using RegExp constructor
// const regex = new RegExp('^(([NnSs+-])?([0-8]?\\d(\\.\\d*)?|90(\\.0*)?)([°˚º^~*NnSs+-])*)([,:;\\s|\\\/\\\\-]+)(([EeWw+-])*([0]?\\d?\\d(\\.\\d*)?|1[0-7]\\d(\\.\\d*)?|180(\\.0*)?)[°˚º^~*]*([EeWw+-])*)[\\s]*$', 'mg')
const str = `//check all zeros
0 0
0.0 0.0
0.000 0.000
0.0000 0.0000
//check plus and minus signs
+0 0
+0.0 0.0
+0.000 0.000
+0.0000 0.0000
0 +0
0.0 +0.0
0.000 +0.000
0.0000 +0.0000
+0 +0
+0.0 +0.0
+0.000 +0.000
+0.0000 +0.0000
-0 0
-0.0 0.0
-0.000 0.000
-0.0000 0.0000
0 -0
0.0 -0.0
0.000 -0.000
0.0000 -0.0000
-0 -0
-0.0 -0.0
-0.000 -0.000
-0.0000 -0.0000
0+ 0
0.0+ 0.0
0.000+ 0.000
0.0000+ 0.0000
0 0+
0.0 0.0+
0.000 0.000+
0.0000 0.0000+
0- 0
0.0- 0.0
0.000- 0.000
0.0000- 0.0000
0 0-
0.0 0.0-
0.000 0.000-
0.0000 0.0000-
0+ 0+
0.0+ 0.0+
0.000+ 0.000+
0.0000+ 0.0000+
0- 0-
0.0- 0.0-
0.000- 0.000-
0.0000- 0.0000-
//check hemipshere
0N 0
0.0N 0.0
0.000N 0.00
0.0000N 0.000
0N 0E
0.0N 0.0E
0.000N 0.00E
0.0000N 0.000E
0N 0W
0.0N 0.0W
0.000N 0.00W
0.0000N 0.000W
0S 0
0.0S 0
0.000S 0
0.0000S 0
0S 0E
0.0S 0.0E
0.000S 0.00E
0.0000S 0.000E
0S 0W
0.0S 0.0W
0.000S 0.00W
0.0000S 0.000W
//check degree symbols
0° 0°
0.0° 0.0°
0.000° 0.000°
0.0000° 0.0000°
0˚ 0˚
0.0˚ 0.0˚
0.000˚ 0.000˚
0.0000˚ 0.0000˚
0º 0º
0.0º 0.0º
0.000º 0.000º
0.0000º 0.0000º
0^ 0^
0.0^ 0.0^
0.000^ 0.000^
0.0000^ 0.0000^
0* 0*
0.0* 0.0*
0.000* 0.000*
0.0000* 0.0000*
0~ 0~
0.0~ 0.0~
0.000~ 0.000~
0.0000~ 0.0000~
//check sperators
0,0
0.0,0.0
0.000,0.000
0.0000,0.0000
0-0
0.0-0.0
0.000-0.000
0.0000-0.0000
0:0
0.0:0.0
0.000:0.000
0.0000:0.0000
0;0
0.0;0.0
0.000;0.000
0.0000;0.0000
0|0
0.0|0.0
0.000|0.000
0.0000|0.0000
0/0
0.0/0.0
0.000/0.000
0.0000/0.0000
0\\0
0.0\\0.0
0.000\\0.000
0.0000\\0.0000
90,180
45,45
//invalid
90.123 0.0
91.0 0
91.00 0
91.0 0.0
91.00 0.00
0 180.1
0 181
`;
// Reset `lastIndex` if this regex is defined globally
// regex.lastIndex = 0;
let m;
while ((m = regex.exec(str)) !== null) {
// This is necessary to avoid infinite loops with zero-width matches
if (m.index === regex.lastIndex) {
regex.lastIndex++;
}
// The result can be accessed through the `m`-variable.
m.forEach((match, groupIndex) => {
console.log(`Found match, group ${groupIndex}: ${match}`);
});
}
Please keep in mind that these code samples are automatically generated and are not guaranteed to work. If you find any syntax errors, feel free to submit a bug report. For a full regex reference for JavaScript, please visit: https://developer.mozilla.org/en/docs/Web/JavaScript/Guide/Regular_Expressions