Javascript 测试字符串是否以.html |.html |.json结尾
我想创建一个javascript正则表达式来测试字符串是否是指向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构造函数创建常量正则表达式,因为这需要对
.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
对不起,我没想到你会这么快评论:-)