我想创建一个 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)
这个似乎有效,但我不相信这是正确的。有人可以确保我吗?:)
谢谢
不要使用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)