分析
一个完整的域名,由根域、顶级域、二级、三级……域名构成,每级域名之间用点分开,每级域名由字母、数字和减号构成(第一个字母不能是减号),不区分大小写,长度不超过63。
很显然,单独的名字可以由正则表达式[a-zA-Z0-9][-a-zA-Z0-9]{0,62}来匹配,而完整的域名至少包括两个名字(比如google.com,由google和com构成),最后可以有一个表示根域的点
匹配完整域名的正则表达式:
代码如下 | 复制代码 |
[a-zA-Z0-9][-a-zA-Z0-9]{0,62}(.[a-zA-Z0-9][-a-zA-Z0-9]{0,62})+.? |
我们最简单版的js正则过滤取域名
域名正则表达式js版
代码如下 | 复制代码 |
function doseo() { if(!$('domain').value.match(/^([a-z0-9-]{1,}.)?[a-z0-9-]{2,}.([a-z0-9-]{1,}.)?[a-z0-9]{2,}$/i)){ alert('哈罗~~~首先,请输入正确的域名 :P '); $('domain').value = ''; $('domain').focus(); return; } |
上面可以用来判断域名了,那么我要过滤域名怎么办,看实例
经这位朋友测试,他还是比较喜欢这种效果的(我个人还是比较喜欢先去掉空格再检测),应他要求把源码放出:
代码如下 | 复制代码 |
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <html> <head> <title>测试</title> </head> <body> <script language="javascript"> function checkurl(obj){ var pattern = /cs*os*m|cs*n|ns*es*t|os*rs*g/gi; if(pattern.test(obj.value)){ alert("留言中有com|cn|net|org,有广告链接嫌疑,不能提交!"); obj.value = ""; obj.focus(); return false; } else{ //做你想做的事 } } </script> <textarea name="content" cols="60" rows="10" wrap="VIRTUAL" id="content" onBlur="javascript:checkurl(this);"></textarea> </head> |
网上找到js过滤html标题的代码如下:
代码如下 | 复制代码 |
function setContent(str) { str = str.replace(/</?[^>]*>/g,''); //去除HTML tag str.value = str.replace(/[ | ]*n/g,'n'); //去除行尾空白 //str = str.replace(/n[s| | ]*r/g,'n'); //去除多余空行 return str; } |
测试的时候发现这段代码不能过滤掉网页中空格字符(即: )。于是自己又改造了一下:
代码如下 | 复制代码 |
function removeHTMLTag(str) { str = str.replace(/</?[^>]*>/g,''); //去除HTML tag str = str.replace(/[ | ]*n/g,'n'); //去除行尾空白 //str = str.replace(/n[s| | ]*r/g,'n'); //去除多余空行 str=str.replace(/ /ig,'');//去掉 return str; } |
恩,我的要求达到了。
这样我们的过滤域名,html标题及域名难都一搞定了。
时间: 2024-09-20 07:55:35