Javascript 用于检测包含URL或文件扩展名的字符串的正则表达式
我正在尝试创建一个小脚本,用于检测字符串输入是否为: 1) URL(将包含文件名):“” 2) 只是一个文件名:“html5shiv.js” 到目前为止,我已经找到了这个,但我认为它只是检查了URL和文件扩展名。有没有一种简单的方法使它使用“或”检查?我对RegExp不是很有经验Javascript 用于检测包含URL或文件扩展名的字符串的正则表达式,javascript,regex,Javascript,Regex,我正在尝试创建一个小脚本,用于检测字符串输入是否为: 1) URL(将包含文件名):“” 2) 只是一个文件名:“html5shiv.js” 到目前为止,我已经找到了这个,但我认为它只是检查了URL和文件扩展名。有没有一种简单的方法使它使用“或”检查?我对RegExp不是很有经验 var myRegExp = /[^\\]*\.(\w+)$/i; 提前感谢您。请看一下这个(根本不需要正则表达式): 是的,您可以使用交替运算符|。但要小心,因为它的优先级很低。低于测序。您需要编写类似于/(cat
var myRegExp = /[^\\]*\.(\w+)$/i;
提前感谢您。请看一下这个(根本不需要正则表达式):
是的,您可以使用交替运算符
|
。但要小心,因为它的优先级很低。低于测序。您需要编写类似于/(cat)|(dog)/
的内容
使用这么少的用例/测试用例很难理解您到底想要什么,但是
(http://[a-zA-Z0-9\./]+)|([a-zA-Z0-9\.]+)
应该给你一个起点。如果它是一个URL,请将其剥离到最后一部分,并将其视为“只是一个文件名” 这个正则表达式怎么样
(\.js)$
它检查行的末尾是否有.js
$
表示行尾
基本上,要在正则表达式中使用'OR',只需使用'pipe'分隔符即可
(aaa|bbb)
将匹配
aaa
或
要使正则表达式与url匹配,我建议如下:
\w+://[\w\._~:/?#\[\]@!$&'()*+,;=%]*
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
}
这是基于url的
对于文件,您对文件名的定义是什么
如果要搜索字符串,则匹配“(至少)一对多个非句号字符,后跟一个句号,后跟(至少)一对多个非句号字符”,我建议使用以下正则表达式:
[^\.]+\.[^\.]+
总之:
(\w+://[\w\._~:/?#\[\]@!$&'()*+,;=%]*|[^\.]+\.[^\.]+)
下面是一个工作示例(使用javascript):
您可以在此处在线测试正则表达式:尝试以下方法:
var ajx = 'http://ajax.googleapis.com/html5shiv.js';
function isURL(str){
return /((\/\w+)|(^\w+))\.\w{2,}$/.test(str);
}
console.log(isURL(ajx));
节目在这里
<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>
var url=“Home/this/example/file.js”;
var条件=0;
var结果=”;
对于(var i=url.length;i>0&&condition,如果是为了流量控制,可以执行以下操作:
\w+://[\w\._~:/?#\[\]@!$&'()*+,;=%]*
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);
非常酷。我正在重用一个不同的正则表达式,因为我在调用这个函数之前对它使用了.test(),以返回关于它是否有文件的布尔值。好的,我不知道你需要使用正则表达式。但是为什么要下推呢?Array
没有方法last()
在任何当前的ES规范中。我认为。\.
而不是
但是。为什么URL正则表达式中没有%
?好问题!答案是我很懒,只是直接从这个答案中删除了有效字符(应该已经正确完成我的家庭作业)-!我已经更新了答案以包含“%”。
var test = "http://ajax.googleapis.com/html5shiv.js";
var regex = /(\w+\.\w+)$/i;
var filename = regex.exec(test);