Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.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-为什么我的dd.mm.yyyy-dd.mm.yyyy正则表达式不起作用?_Javascript_Regex - Fatal编程技术网

Javascript-为什么我的dd.mm.yyyy-dd.mm.yyyy正则表达式不起作用?

Javascript-为什么我的dd.mm.yyyy-dd.mm.yyyy正则表达式不起作用?,javascript,regex,Javascript,Regex,我编写了以下代码: var date_regex = new RegExp("\d{2}[./-]\d{2}[./-]\d{4}", "gi"); var period = "27.03.2014 - 24.04.2014"; console.log(date_regex.exec(period)); 我得到控制台日志:null 我在这个网站上检查了我的代码,它显示有效。怎么了?谢谢你的帮助 \d{2}[./-]\d{2}[./-]\d{4} 你需要避开你的反斜杠: var date_re

我编写了以下代码:

var date_regex = new RegExp("\d{2}[./-]\d{2}[./-]\d{4}", "gi");
var period = "27.03.2014 - 24.04.2014";

console.log(date_regex.exec(period));
我得到控制台日志:null

我在这个网站上检查了我的代码,它显示有效。怎么了?谢谢你的帮助

\d{2}[./-]\d{2}[./-]\d{4}

你需要避开你的反斜杠:

var date_regex = new RegExp("\\d{2}[./-]\\d{2}[./-]\\d{4}", "gi");
var date_regex = new RegExp("\\d{2}[./-]\\d{2}[./-]\\d{4}", "gi");
作为旁注,您可以通过捕获第一个分隔符并通过\1为第二个分隔符匹配相同的分隔符来避免使用不匹配的分隔符(如27.01-1444)匹配字符串:


你需要避开你的反斜杠:

var date_regex = new RegExp("\\d{2}[./-]\\d{2}[./-]\\d{4}", "gi");
var date_regex = new RegExp("\\d{2}[./-]\\d{2}[./-]\\d{4}", "gi");
作为旁注,您可以通过捕获第一个分隔符并通过\1为第二个分隔符匹配相同的分隔符来避免使用不匹配的分隔符(如27.01-1444)匹配字符串:


您正在从字符串创建正则表达式,因此需要转义反斜杠:

var date_regex = new RegExp("\\d{2}[./-]\\d{2}[./-]\\d{4}", "gi");
var date_regex = new RegExp("\\d{2}[./-]\\d{2}[./-]\\d{4}", "gi");
或者使用正则表达式文字就不那么复杂了:

var date_regex = /\d{2}[./-]\d{2}[./-]\d{4}/gi;

您正在从字符串创建正则表达式,因此需要转义反斜杠:

var date_regex = new RegExp("\\d{2}[./-]\\d{2}[./-]\\d{4}", "gi");
var date_regex = new RegExp("\\d{2}[./-]\\d{2}[./-]\\d{4}", "gi");
或者使用正则表达式文字就不那么复杂了:

var date_regex = /\d{2}[./-]\d{2}[./-]\d{4}/gi;

创建正则表达式对象而不是使用字符串的文字时,需要使用双转义斜杠:

var date_regex = new RegExp("\\d{2}[./-]\\d{2}[./-]\\d{4}", "gi");
您将发现,日志记录date_regex会导致/d{2}[./-]d{2}[./-]d{4}/gi-这不是我们想要的

但是,您只需要在某些条件下使用字符串:

正则表达式包含一个变量 正则表达式在循环字符串中形成,以防止重新编译 因此,在这种情况下,最好使用文字:

var date_regex = /\d{2}[./-]\d{2}[./-]\d{4}/gi;

有关创建RegExp对象的详细信息,请参阅。

当创建正则表达式对象而不是带有字符串的文本时,需要使用双转义斜杠:

var date_regex = new RegExp("\\d{2}[./-]\\d{2}[./-]\\d{4}", "gi");
您将发现,日志记录date_regex会导致/d{2}[./-]d{2}[./-]d{4}/gi-这不是我们想要的

但是,您只需要在某些条件下使用字符串:

正则表达式包含一个变量 正则表达式在循环字符串中形成,以防止重新编译 因此,在这种情况下,最好使用文字:

var date_regex = /\d{2}[./-]\d{2}[./-]\d{4}/gi;

有关创建RegExp对象的详细信息,请参阅。

组合给定的答案并使用.match返回数组中的所有匹配项

var date_regex = /\d{2}[./-]\d{2}[./-]\d{4}/gi;
var range      = "27.03.2014 - 24.04.2014";

console.log( range.match(date_regex) );  // [ "27.03.2014", "24.04.2014" ]

组合给定的答案并使用.match返回数组中的所有匹配项

var date_regex = /\d{2}[./-]\d{2}[./-]\d{4}/gi;
var range      = "27.03.2014 - 24.04.2014";

console.log( range.match(date_regex) );  // [ "27.03.2014", "24.04.2014" ]

谢谢大家!我可以在11分钟内接受你的回答。我快疯了,多亏了大家!我可以在11分钟内接受你的回答。我快发疯了,谢谢!很多SomeKittens@zer02不客气。正则表达式可能很棘手。别忘了投票并接受!谢谢很多SomeKittens@zer02不客气。正则表达式可能很棘手。别忘了投票并接受!如果您使用的是正则表达式文字,则不需要新的正则表达式部分。@nnnnnn:正确,但为了完整性起见,这并不有害,但作为一个您不需要的额外函数调用,它的效率较低,而且更难阅读,因为它让人们想知道为什么您有一个您不需要的额外函数调用。@nnnnnn:很可能您是对的。我通常使用字符串和替换函数来双重转义反斜杠,例如RegExpre_escape'someregex'。在旧浏览器中,typeof/someregex/='function',我从来没有特别喜欢过,但为了提高性能,我将更改上面的内容。如果您使用的是regex文本,则不需要新的RegExp部分。@nnnn:true,但对于完整性来说,这并没有什么坏处,但一个你不需要的额外函数调用效率较低,阅读起来也更困难,因为它让人们想知道为什么你有一个你不需要的额外函数调用。@nnnnnn:很可能你是对的。我通常使用字符串和替换函数来双重转义反斜杠,例如RegExpre_escape'someregex'。在旧的浏览器中,typeof/someregex/='function',我从来都不特别喜欢它,但为了提高性能,我将改变上面的内容。