Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/477.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 正则表达式[^A-J]和匹配结果_Javascript_Regex - Fatal编程技术网

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

Javascript 正则表达式[^A-J]和匹配结果,javascript,regex,Javascript,Regex,请您解释一下,为什么下一次匹配的输出结果是s 更新:我认为输出应该是I,与常规范围字符匹配。 var str=“这够了吗?”; var patt1=新的RegExp(“[^A-J]”); var result=str.match(patt1);//[“s”,索引:1,输入:“这足够吗?”] document.getElementById('id').innerHTML=result 您的正则表达式匹配大写A到大写J范围之外的任何字符,因此s是满足该要求的第一个字符。像您这样的正则表达式将匹配搜索

请您解释一下,为什么下一次匹配的输出结果是
s

更新:我认为输出应该是
I
,与常规范围字符匹配。
var str=“这够了吗?”;
var patt1=新的RegExp(“[^A-J]”);
var result=str.match(patt1);//[“s”,索引:1,输入:“这足够吗?”]
document.getElementById('id').innerHTML=result

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


更清楚地说,字符组表达式开头的
^
意味着该组应包括
[^]
内容中未描述的所有字符。您的范围是
A-J
,因此
[^A-J]
匹配除
A
J

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

我对外部匹配有点困惑range@FSou1我不明白你的意思。你希望模式匹配什么?我不知道你为什么回答“匹配范围外的任何字符”。看起来这是因为有
^
@FSou1是的,这正是前面的
^
的意思。如果您想通过
J
匹配
A
,请不要使用
^
。如果您能解释您预期的结果,这会有所帮助;事实上,并没有人知道你们认为需要解释的是什么。难道不意味着在字符串的开头匹配集合中的任何字符吗?不是在字符类中它不匹配t@FSou1否-在正则表达式中,
^
有两个不同的角色。当它位于
[]
组的开头时,表示匹配该组的补码。你想到的是
^
[]
之外的模式的开头。看起来我把
/^a/
/[^a]/
搞混了