Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/464.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 regexp中对后跟点的空白字符显示不同的结果?_Javascript_Regex - Fatal编程技术网

为什么字符类和捕获组在javascript regexp中对后跟点的空白字符显示不同的结果?

为什么字符类和捕获组在javascript regexp中对后跟点的空白字符显示不同的结果?,javascript,regex,Javascript,Regex,我在解这本书的章节练习- 有一个问题,我需要为后跟点、逗号、冒号或分号的空白字符编写正则表达式 这是我写的 var re1 = /\s(.|,|:|;)/; 这本书的答案是这样的 var re2 = /\s[.,;:]/; 我知道第二种方法是正确的,而且效率更高。但是,如果不考虑效率,第一种方法也应该给出正确的结果 第一个没有为下面的代码段提供正确的输出- console.log(re1.test("escape the dot")); // prints true 它应该给出“fals

我在解这本书的章节练习-

有一个问题,我需要为后跟点、逗号、冒号或分号的空白字符编写正则表达式

这是我写的

var re1 = /\s(.|,|:|;)/;
这本书的答案是这样的

var re2 = /\s[.,;:]/;
我知道第二种方法是正确的,而且效率更高。但是,如果不考虑效率,第一种方法也应该给出正确的结果

第一个没有为下面的代码段提供正确的输出-

console.log(re1.test("escape the dot"));  // prints true
它应该给出“false”,但输出的却是相反的结果。我无法理解这一点。我也试过了,但这个数字似乎也不错


似乎我对自己的观点有点误解。

当我把这个问题写完后,我意识到我的错误是给了我错误的输出。因此,我想我宁愿在这里分享问题和答案,以便帮助将来可能面临类似问题的任何人

问题是,当在方括号中使用句点时,它本身就失去了它的特殊意义。其他特殊字符也是如此,例如+

但当它们被用于抓捕群体时,它们仍保留着特殊的意义

那么,代码呢

var re1 = /\s(.|,|:|;)/;
console.log(re1.test("escape the dot"));  // prints true
而是在寻找模式——一个空格后跟一个不是换行符的字符(因为句点),或者逗号、冒号和分号

要获得正确的输出,正确的re(如果与捕获组一起使用)应为

var re1 = /\s(\.|,|:|;)/;

可能是重复的,@Tushar,应该是这样的,但答案并不能解释在方括号内使用句号时会失去特殊意义!我以前没有得到过那个东西!:)