我想创建一个javascript正则表达式来测试字符串是否是指向.html
,.htm
或.json
资源的有效网址。
我试过
validUrl = new RegExp('(\.html)|(\.htm)$','g');
并且像这样,但没有成功:(然后我试过
validUrl = new RegExp('(.*\.html|.*\.htm|.*\.json)$','i');
这个似乎有效,但我不相信这是正确的。有人能保证我吗? :)
由于
答案 0 :(得分:4)
不要使用RegExp
构造函数创建常量正则表达式,因为这需要双重转义字符串文字中的反斜杠。相反,使用正则表达式文字:
validUrl = /(.*\.html|.*\.htm|.*\.json)$/i;
现在\.
确实与点匹配。
您可以进一步将此缩短为.*\.(html?|json)$
,实际上您无需匹配.*
来测试后缀,因此您只需使用
validUrl = /\.(html?|json)$/i;