请您解释一下,为什么下一场比赛的输出结果为s
?
更新:我认为输出应该是常规范围字符匹配的I
。
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>
答案 0 :(得分:1)
您的正则表达式匹配大写A
范围之外的任何字符到大写J
,因此s
是满足该要求的第一个字符。像你这样的正则表达式将匹配搜索字符串中的任何位置。
更清楚一点,字符组表达式开头的^
表示该组应包含[^ ]
内容所描述的所有字符 not 。您的范围为A-J
,因此[^A-J]
匹配 A
到J
以外的所有字符。
答案 1 :(得分:1)
^
表示&#34;匹配不在以下字符集中的字符&#34;。因为您还没有指定任何标志,所以它只返回第一个匹配项。第一个匹配是s
,它不在字符A到J的集合中。