经过努力终于自己写出一个简单而符号要求的判断是否为链接地址的正则表达式(包括相对和绝对地址)。
网上判断是否为url的正则表达式很多,但是却没有搜索到一个同时判断相对url和绝对url的(即../index.html和http://hi.baidu.com 或 http://hi.baidu.com/zdz8207/ 都视为符合要求的url)。后来根据要求反向思维终于写出来简单且符合要求的正则表达式了。需求是传入的url可以是链接地址也可以是js函数,要判断是否为url,如果不少url则按照js函数进行处理(eval(js))。通过反向分析:
一个正确的js函数必须满足以下三个要求:
1.函数方法:必须以()或();结尾
2.函数名:必须不能包含 . 点号(js命名规则函数名称不能包含.)而正确url则最少有一个点号
3.函数:必须为}或};结尾,而正确url必须是单词或/结尾。
根据上面三点,那么符合要求的url就是:必须包含.(最后面一个.前面最少有一个字符),点号后面最少有一个单词字符,最后一个字符必须为单词字符或/
根据上面的描述来写正则表达式就简单多了,先说明几个简单的正则表达式:
/w:必须为单词
/w+:最少为一个单词
$:最后一个字符
(a|b):这个字符为a或者b
遇到正则表达式的关键字(保留字)必须用/作为转义
那么最后的正则表达式就是://w+.(/w+|/w+//)$/
最后给出js函数吧,最近心情不是很少,必须少把原创的东西分享出来,这个算是对需要的人一点贡献了。
function isURL(str)
{
//var reg = /[0-9a-zA-z]+.(html|htm|shtml|jsp|asp|php|com|cn|net|com.cn|org)$/;
//必须包含.(最后面一个.前面最少有一个字符)且.后面最少有一个单词字符,最后一个字符必须为单词字符或/
var reg = //w+.(/w+|/w+//)$/;
var isurl = reg.test(str); //test(str)方法是js正确表达式内置的对象可以直接调用
return isurl;
}
网上判断是否为url的正则表达式很多,但是却没有搜索到一个同时判断相对url和绝对url的(即../index.html和http://hi.baidu.com 或 http://hi.baidu.com/zdz8207/ 都视为符合要求的url)。后来根据要求反向思维终于写出来简单且符合要求的正则表达式了。需求是传入的url可以是链接地址也可以是js函数,要判断是否为url,如果不少url则按照js函数进行处理(eval(js))。通过反向分析:
一个正确的js函数必须满足以下三个要求:
1.函数方法:必须以()或();结尾
2.函数名:必须不能包含 . 点号(js命名规则函数名称不能包含.)而正确url则最少有一个点号
3.函数:必须为}或};结尾,而正确url必须是单词或/结尾。
根据上面三点,那么符合要求的url就是:必须包含.(最后面一个.前面最少有一个字符),点号后面最少有一个单词字符,最后一个字符必须为单词字符或/
根据上面的描述来写正则表达式就简单多了,先说明几个简单的正则表达式:
/w:必须为单词
/w+:最少为一个单词
$:最后一个字符
(a|b):这个字符为a或者b
遇到正则表达式的关键字(保留字)必须用/作为转义
那么最后的正则表达式就是://w+.(/w+|/w+//)$/
最后给出js函数吧,最近心情不是很少,必须少把原创的东西分享出来,这个算是对需要的人一点贡献了。
function isURL(str)
{
//var reg = /[0-9a-zA-z]+.(html|htm|shtml|jsp|asp|php|com|cn|net|com.cn|org)$/;
//必须包含.(最后面一个.前面最少有一个字符)且.后面最少有一个单词字符,最后一个字符必须为单词字符或/
var reg = //w+.(/w+|/w+//)$/;
var isurl = reg.test(str); //test(str)方法是js正确表达式内置的对象可以直接调用
return isurl;
}