正则表达式[^ A-J]和匹配结果

时间:2015-12-19 16:06:11

标签: javascript regex

请您解释一下,为什么下一场比赛的输出结果为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>

2 个答案:

答案 0 :(得分:1)

您的正则表达式匹配大写A范围之外的任何字符到大写J,因此s是满足该要求的第一个字符。像你这样的正则表达式将匹配搜索字符串中的任何位置。

更清楚一点,字符组表达式开头的^表示该组应包含[^ ]内容所描述的所有字符 not 。您的范围为A-J,因此[^A-J]匹配 AJ以外的所有字符

答案 1 :(得分:1)

^表示&#34;匹配不在以下字符集中的字符&#34;。因为您还没有指定任何标志,所以它只返回第一个匹配项。第一个匹配是s,它不在字符A到J的集合中。