Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/431.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正则表达式匹配返回null或未定义_Javascript_Regex_Firefox - Fatal编程技术网

JavaScript正则表达式匹配返回null或未定义

JavaScript正则表达式匹配返回null或未定义,javascript,regex,firefox,Javascript,Regex,Firefox,为什么它返回null或undefined,但当我检查正则表达式时,它工作正常,我只想确保URL匹配您的斜杠和https前的额外空间有问题,并且一些句点字符也没有正确转义 使用newregexp(“string”)格式时,必须对任何反斜杠进行双转义。使用/regexhere/语法要容易得多,因为您不必对许多正则表达式规则中使用的反斜杠进行双重转义 此外,字符串还有一个名为.match()的正则表达式方法。正则表达式本身有一个名为。test()或.exec()的方法。我建议: var url_pat

为什么它返回null或undefined,但当我检查正则表达式时,它工作正常,我只想确保URL匹配

您的斜杠和https前的额外空间有问题,并且一些句点字符也没有正确转义

使用
newregexp(“string”)
格式时,必须对任何反斜杠进行双转义。使用
/regexhere/
语法要容易得多,因为您不必对许多正则表达式规则中使用的反斜杠进行双重转义

此外,字符串还有一个名为
.match()
的正则表达式方法。正则表达式本身有一个名为。
test()
.exec()
的方法。我建议:

var url_pattern = new RegExp("(?:http| https)://(www.|.*)someurlhere[.]com/\d\d\d\d/\d\d/\d\d/.*/", "i");
var url=window.location; //or could be document.URL both don't work
url.match(url_pattern);
如果您想继续使用另一种声明方式,您可以像这样避开每个反斜杠:

var url_pattern = /(?:http|https):\/\/(www\.|.*)someurlhere\.com\/\d\d\d\d\/\d\d\/\d\d\/.*\//i;
window.location.href.match(url_pattern);

您的斜杠和https前面的额外空格有问题,并且一些句点字符也没有正确转义

使用
newregexp(“string”)
格式时,必须对任何反斜杠进行双转义。使用
/regexhere/
语法要容易得多,因为您不必对许多正则表达式规则中使用的反斜杠进行双重转义

此外,字符串还有一个名为
.match()
的正则表达式方法。正则表达式本身有一个名为。
test()
.exec()
的方法。我建议:

var url_pattern = new RegExp("(?:http| https)://(www.|.*)someurlhere[.]com/\d\d\d\d/\d\d/\d\d/.*/", "i");
var url=window.location; //or could be document.URL both don't work
url.match(url_pattern);
如果您想继续使用另一种声明方式,您可以像这样避开每个反斜杠:

var url_pattern = /(?:http|https):\/\/(www\.|.*)someurlhere\.com\/\d\d\d\d\/\d\d\/\d\d\/.*\//i;
window.location.href.match(url_pattern);

您应该考虑使用JFRADE00建议的>ReXEX/语法,也可以使ReGEXP与ReGExp.NeXT语法一起工作。问题是您在一个字符串中,因此任何反斜杠都被认为是字符串本身的转义字符,而不是RegExp。要解决此问题,应使用双反斜杠。您的RegExp应更改为:

newregexp(“/(?:http | https):/(www.|.*)someurlhere[.]com/\\d\\d\d\\d/\\d\\d/\\d/\\d/*/”,“i”)`

您可能还想对RegExp进行一些其他更改。例如,我建议使用
\.
(再次注意字符串中使用的双转义)来匹配句点,而不是使用
[.]

> P> >您应该考虑使用JFRADE00建议的>ReXEX//COD>语法,也可以使ReGEXP与ReGExp.NeXT语法一起工作。问题是您在一个字符串中,因此任何反斜杠都被认为是字符串本身的转义字符,而不是RegExp。要解决此问题,应使用双反斜杠。您的RegExp应更改为:

newregexp(“/(?:http | https):/(www.|.*)someurlhere[.]com/\\d\\d\d\\d/\\d\\d/\\d/\\d/*/”,“i”)`

您可能还想对RegExp进行一些其他更改。例如,我建议使用
\.
(再次注意字符串中使用的双转义)来匹配句点,而不是使用
[.]

值得注意的是window.location实际上是一个对象。在位置上定义了许多可用和有用的属性。请参阅:我向对象添加了toString(),但它仍然为return@PeterWagenet-在需要字符串的上下文中使用window.location会自动对其调用toString(),从而提供完整的URL。如果您需要,最好使用
.href
proeprty,但在大多数情况下,两者都可以使用。值得注意的是,window.location实际上是一个对象。在位置上定义了许多可用和有用的属性。请参阅:我向对象添加了toString(),但它仍然为return@PeterWagenet-在需要字符串的上下文中使用window.location会自动对其调用toString(),从而提供完整的URL。如果您需要,最好使用
.href
proeprty,但在大多数情况下,这两种方法都适用。您未能正确地避开斜杠。这将生成一个语法错误。@PeterWagenet-where?在第一种模式中,只需要转义正斜杠。在第二种模式中,只需转义反斜杠。@jfriend00 yea在第一种模式中抛出非法字符,但第二种模式就像一个符咒thanks@italiano40-我修好了第一个。它在这里起作用:。@jfriend00好的,刚刚换了一个,效果很好,谢谢!你没能正确地逃脱你的刀砍。这将生成一个语法错误。@PeterWagenet-where?在第一种模式中,只需要转义正斜杠。在第二种模式中,只需转义反斜杠。@jfriend00 yea在第一种模式中抛出非法字符,但第二种模式就像一个符咒thanks@italiano40-我修好了第一个。它在这里起作用:。@jfriend00好的,刚刚换了一个,效果很好,谢谢!