正则表达式检测包含URL或文件扩展名的字符串

时间:2013-08-29 21:58:13

标签: javascript regex

我正在尝试创建一个小脚本来检测字符串输入是否为:

1)一个URL(将包含文件名):'http://ajax.googleapis.com/html5shiv.js'

2)只是一个文件名:'html5shiv.js'

到目前为止,我已经找到了这个,但我认为它只是检查URL和文件扩展名。是否有一种简单的方法可以使用'或'检查?我对RegExp不太熟悉。

var myRegExp = /[^\\]*\.(\w+)$/i;

提前谢谢。

8 个答案:

答案 0 :(得分:2)

这个正则表达式怎么样?

(\.js)$

如果线上有.js,它会检查线的末尾。

$表示行尾。

tested here.

答案 1 :(得分:1)

基本上,要在正则表达式中使用“OR”,只需使用“管道”分隔符。

(aaa|bbb)

将匹配

aaa

bbb

要使正则表达式匹配网址,我建议如下:

\w+://[\w\._~:/?#\[\]@!$&'()*+,;=%]*

这是基于网址的allowed character set

对于文件,您对文件名的定义是什么?

如果你想搜索字符串,匹配“(至少)一个到多个非fullstop字符,然后是一个fullstop,然后是(至少)一个到多个非fullstop字符”,我建议以下正则表达式:

[^\.]+\.[^\.]+

总而言之:

(\w+://[\w\._~:/?#\[\]@!$&'()*+,;=%]*|[^\.]+\.[^\.]+)

这是一个工作的例子(在javascript中):jsfiddle

您可以在线测试正则表达式:http://gskinner.com/RegExr/

答案 2 :(得分:0)

看看这个(根本不需要正则表达式):

var filename = string.indexOf('/') == -1
             ? string
             : string.split('/').slice(-1)[0];

答案 3 :(得分:0)

是的,您可以使用交替运算符|。但要小心,因为它的优先级非常低。低于测序。您需要编写/(cat)|(dog)/等内容。

如此少的使用/测试用例很难理解你究竟想要什么,但是

(http://[a-zA-Z0-9\./]+)|([a-zA-Z0-9\.]+)

应该给你一个起点。

答案 4 :(得分:0)

如果是URL,请将其剥离到最后一部分,并将其视为“只是文件名”。

function isFile(fileOrUrl) {
    // This will return everything after the last '/'; if there's
    // no forward slash in the string, the unmodified string is used
    var filename = fileOrUrl.split('/').pop();
    return (/.+\..+/).test(filename);
}

答案 5 :(得分:0)

试试这个:

var ajx = 'http://ajax.googleapis.com/html5shiv.js';
function isURL(str){
  return /((\/\w+)|(^\w+))\.\w{2,}$/.test(str);
}
console.log(isURL(ajx));

答案 6 :(得分:0)

这是程序!

<script>
var url="Home/this/example/file.js";
var condition=0;
var result="";
for(var i=url.length; i>0 && condition<2 ;i--)
{
    if(url[i]!="/" && url[i]!="."){result= (condition==1)? (url[i]+result):(result);}
    else{condition++;}
}
document.write(result);
</script>

答案 7 :(得分:0)

如果是出于流量控制的目的,您可以执行以下操作:

var test = "http://ajax.googleapis.com/html5shiv.js";    

// to recognize http & https
var regex = /^https?:\/\/.*/i;    
var result = regex.exec(test);    
if (result == null){
    // no URL found code
} else {
    // URL found code
}

为了捕获文件名,您可以使用:

var test = "http://ajax.googleapis.com/html5shiv.js";    

var regex = /(\w+\.\w+)$/i;    
var filename = regex.exec(test);