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

Jim*_*m-Y 0 javascript regex

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

我试过

validUrl = new RegExp('(\.html)|(\.htm)$','g');
Run Code Online (Sandbox Code Playgroud)

像这样,但没有成功:(然后我尝试了

validUrl = new RegExp('(.*\.html|.*\.htm|.*\.json)$','i');
Run Code Online (Sandbox Code Playgroud)

这个似乎有效,但我不相信这是正确的。有人可以确保我吗?:)

谢谢

Ber*_*rgi 5

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

validUrl = /(.*\.html|.*\.htm|.*\.json)$/i;
Run Code Online (Sandbox Code Playgroud)

现在\.s 确实匹配点。

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

validUrl = /\.(html?|json)$/i;
Run Code Online (Sandbox Code Playgroud)

  • 您可以将此正则表达式简化为`/\.(html?|json)$/i` (2认同)