RegEx Number Range [0-9]
The \b word boundary meta is to ensure that words like: 36000 or l337 doesn't match. There are 3 character class ranges† (hundreds 1-2|3, tens 0-9|0-5, and ones 0-9). The ? is a lazy quantifier because the hundreds and tens aren't necessarily there all the time. The pipe | and surrounding parenthesis are alternations for 360 since the tens cannot be [0-6] because doing so leaves the possibility of matching 361 thru 369✱.
3[0-5][0-9] /* 300-359 */ |360 // 360
Although the possibility of exceeding 360 is prevented, so is the possibility of getting ranges of 160-199 and 260-299✱. We can add another alternation: | and change the ranges a little:
[1-2]?[0-9]?[0-9] // 0-299
So to recap:
\b keeps adjacent characters from bleeding into the matches
[...] covers a range or a group of literal matches
? makes the preceding match optional
(...|...) is an OR gate
\b([1-2]?[0-9]?[0-9]|3[0-5][0-9]|360)\b
†The equivalent for [0-9] as a meta sequence is \d.
✱Thanks go out to Master Toto for pointing out the range flaws.
Demo
var str = `
Rotate by 360 degrees
36 degrees rotation
Rotate 100
Turn 3600
Rotate 6700
270Deg
0 origin
Do not exceed 361 degrees or over.
Turn 180 degrees back
`;
var rgx = /\b([1-2]?[0-9]?[0-9]|3?[0-5]?[0-9]|360)\b/g;
var res = str.match(rgx, '$1');
console.log(JSON.stringify(res));