Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/439.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 测试字符串是否以.html |.html |.json结尾_Javascript_Regex - Fatal编程技术网

Javascript 测试字符串是否以.html |.html |.json结尾

Javascript 测试字符串是否以.html |.html |.json结尾,javascript,regex,Javascript,Regex,我想创建一个javascript正则表达式来测试字符串是否是指向.html、.htm或.json资源的有效URL 我试过了 validUrl = new RegExp('(\.html)|(\.htm)$','g'); 像这样,但没有成功:(然后我尝试了 validUrl = new RegExp('(.*\.html|.*\.htm|.*\.json)$','i'); 这个似乎有效,但我不相信这是正确的。有人能保证吗?:) 谢谢,不要使用RegExp构造函数创建常量正则表达式,因为这需要对

我想创建一个javascript正则表达式来测试字符串是否是指向
.html
.htm
.json
资源的有效URL

我试过了

validUrl = new RegExp('(\.html)|(\.htm)$','g');
像这样,但没有成功:(然后我尝试了

validUrl = new RegExp('(.*\.html|.*\.htm|.*\.json)$','i');
这个似乎有效,但我不相信这是正确的。有人能保证吗?:)


谢谢,不要使用
RegExp
构造函数创建常量正则表达式,因为这需要对字符串文本中的反斜杠进行双转义。相反,请使用正则表达式文字:

validUrl = /(.*\.html|.*\.htm|.*\.json)$/i;
现在,
\.
s确实匹配点

您可以进一步将其缩短为
*\(html?| json)$
,实际上您不需要匹配
*
来测试后缀,因此您可以使用

validUrl = /\.(html?|json)$/i;

不要使用
RegExp
构造函数创建常量正则表达式,因为这需要对字符串文本中的反斜杠进行双转义。相反,请使用正则表达式文字:

validUrl = /(.*\.html|.*\.htm|.*\.json)$/i;
现在,
\.
s确实匹配点

您可以进一步将其缩短为
*\(html?| json)$
,实际上您不需要匹配
*
来测试后缀,因此您可以使用

validUrl = /\.(html?|json)$/i;

从字符串创建正则表达式时,使用
\\
代替
\
。string literal语法中的
\
开始一个转义序列,因此您需要转义它以将实际字符传递给
RegExp
构造函数。
\
而不是
\
从字符串创建正则表达式。字符串文字语法中的
\
开始一个转义序列,因此您需要转义它以将实际字符传递给
RegExp
构造函数。您可以将此正则表达式简化为
/\(html?| json)$/i
@RevanProdigalKnight我最好选择
/\(?:html?| json)$/i
抱歉使用宽限期,我没想到你会这么快评论:-)你可以将这个正则表达式简化为
/\(html?| json)$/I
@RevanProdigalKnight我最好选择
/\(?:html?| json)$/I
对不起,我没想到你会这么快评论:-)