Q:

Regular expression [^A-J] and match result

Could you please explain, why output result of next match is s?
Update: I thought that output should be I as matched in regular range character.

var str = "Is this enough?";
var patt1 = new RegExp("[^A-J]");
var result = str.match(patt1); // ["s", index: 1, input: "Is this enought?"]
document.getElementById('id').innerHTML = result;
<p id="id"></p>

A:

Your regular expression matches any character outside the range of upper-case A through upper-case J, and so s is the first character that meets that requirement. A regular expression like yours will match anywhere in the search string.
To be more clear, the ^ at the start of your character group expression means that the group should include all characters not described by the contents of the [^ ].  Your range is A-J, so [^A-J] matches all characters except A through J.

