首页 > 代码库 > 正则表达式验证内容
正则表达式验证内容
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>无标题文档</title>
</head>
<style>
ul{
list-style:none;
}
</style>
<body align="center">
<div align="center" style="height:600px;width:600px;">
<h1 >短信内容检查</h1><br />
<p align="left">短信内容规则:</p>
<div align="left" style="height:150px; padding-left:20px;">
<ul>
<li>1、字数不能超过70个(140字节)</li>
<li>2、需要有一句:“xx到xx度”</li>
<li>3、需要有一句:“湿度xx%到xx%”</li>
<li>4、需要有一句:“东莞市气象台xx月xx日” 或 “东莞气象台xx月xx日”</li>
<li>5、气温的范围为:0-40</li>
<li>6、湿度的范围为:0-100</li>
<li>7、日期必须和当前机器日期一致</li>
</ul>
<textarea id="content" cols="60" rows="10" onkeyup ="checkOne()" onchange="checkOne()"></textarea><span id="num">0/140</span><br/><span id="tip" style="color:#FF0000"></span><br />
<button onclick="chenckAll()">检查</button>
</div>
</div>
<script type="text/javascript">
//检查文本域里面的字数
function checkOne(){
var content = document.getElementById("content").value;
//alert(content.replace(/[^\x00-\xff]/g,"**"));
var byteNum = content.replace(/[^\x00-\xff]/g,"**").length;
if(byteNum>140){
document.getElementById("content").value =http://www.mamicode.com/autoAddEllipsis(content, 140);
document.getElementById("num").innerHTML ="140/140";
document.getElementById("tip").innerHTML="字数超过预留数!";
}
document.getElementById("tip").innerHTML="";
document.getElementById("num").innerHTML =""+ byteNum+"/140";
}
//检查、过滤
function chenckAll(){
checkOne();
var content = document.getElementById("content").value;
var regex=/湿度\d{1,3}%到\d{1,3}%/;
var re1 = /\d{1,3}到\d{1,3}度/;
var re2 = /东莞市气象台\d{1,2}月\d{1,2}日/;
var re3 = /东莞气象台\d{1,2}月\d{1,2}日/;
var dateM = formatDate((new Date()), "MM");
var dateD = formatDate((new Date()), "dd");
if(!regex.test(content)){
document.getElementById("tip").innerHTML="需要有一句:“湿度xx%到xx%”";
return;
}else{
var s = content.match(regex)+"";
var x1 = parseInt(s.substring(2,s.indexOf(‘%‘)));
var x2 = parseInt(s.substring((s.indexOf(‘到‘))+1,s.length-1));
if(x1<0||x1>100||x2<0||x2>100){
document.getElementById("tip").innerHTML="湿度范围应在0-100";
return;
}
if(x1>x2){
document.getElementById("tip").innerHTML="湿度区间需调整";
return
}
}
if(!re1.test(content)){
document.getElementById("tip").innerHTML="需要有一句:“xx到xx度”";
return;
}else{
var s = content.match(re1)+"";
var x1 =parseInt(s.substring(0,s.indexOf(‘到‘)));
var x2 = parseInt(s.substring(s.indexOf(‘到‘)+1,s.length-1));
if(x1<0||x1>40||x2<0||x2>40){
document.getElementById("tip").innerHTML="温度范围应在0-40";
return;
}
if(x1>x2){
alert(x1+" "+x2);
document.getElementById("tip").innerHTML="温度区间需调整";
return;
}
}
if(!re2.test(content)&&!re3.test(content)){
document.getElementById("tip").innerHTML="需要有一句:“东莞市气象台xx月xx日” 或 “东莞气象台xx月xx日”";
return;
}else{
var s = content.match(re3)+"";
if(s==‘null‘){
var s1 = content.match(re2)+"";
var dtime = s1.substring(s1.indexOf(‘台‘)+1,s1.length);
var month = dtime.substring(0,dtime.indexOf(‘月‘));
var day = dtime.substring(dtime.indexOf(‘月‘)+1,dtime.length-1);
if(month.length==1){
month =‘0‘+month;
}
if(day.length==1){
day = ‘0‘+day;
}
if(dateD!=day||dateM!=month){
document.getElementById("tip").innerHTML="日期与当前时间不符";
return;
}
}else{
var dtime =s.substring(s.indexOf(‘台‘)+1,s.length);
var month = dtime.substring(0,dtime.indexOf(‘月‘));
var day = dtime.substring(dtime.indexOf(‘月‘)+1,dtime.length-1);
if(month.length==1){
month =‘0‘+month;
}
if(day.length==1){
day = ‘0‘+day;
}
if(dateD!=day||dateM!=month){
document.getElementById("tip").innerHTML="日期与当前时间不符";
return;
}
}
}
document.getElementById("tip").innerHTML="检查通过!";
}
//日期格式化函数
function formatDate(date,format){
var paddNum = function(num){
num += "";
return num.replace(/^(\d)$/,"0$1");
}
//指定格式字符
var cfg = {
yyyy : date.getFullYear() //年 : 4位
,yy : date.getFullYear().toString().substring(2)//年 : 2位
,M : date.getMonth() + 1 //月 : 如果1位的时候不补0
,MM : paddNum(date.getMonth() + 1) //月 : 如果1位的时候补0
,d : date.getDate() //日 : 如果1位的时候不补0
,dd : paddNum(date.getDate())//日 : 如果1位的时候补0
,hh : date.getHours() //时
,mm : date.getMinutes() //分
,ss : date.getSeconds() //秒
}
format || (format = "yyyy-MM-dd hh:mm:ss");
return format.replace(/([a-z])(\1)*/ig,function(m){return cfg[m];});
}
function cutString(pStr, pLen) {
// 原字符串长度
var _strLen = pStr.length;
var _tmpCode;
var _cutString;
// 默认情况下,返回的字符串是原字符串的一部分
var _cutFlag = "1";
var _lenCount = 0;
var _ret = false;
if (_strLen <= pLen/2) {
_cutString = pStr;
_ret = true;
}
if (!_ret) {
for (var i = 0; i < _strLen ; i++ ) {
if (isFull(pStr.charAt(i))) {
_lenCount += 2;
} else {
_lenCount += 1;
}
if (_lenCount > pLen) {
_cutString = pStr.substring(0, i);
_ret = true;
break;
} else if (_lenCount == pLen) {
_cutString = pStr.substring(0, i + 1);
_ret = true;
break;
}
}
}
if (!_ret) {
_cutString = pStr;
_ret = true;
}
if (_cutString.length == _strLen) {
_cutFlag = "0";
}
return {"cutstring":_cutString, "cutflag":_cutFlag};
}
function isFull (pChar) {
for (var i = 0; i < pChar.strLen ; i++ ) {
if ((pChar.charCodeAt(i) > 128)) {
return true;
} else {
return false;
}
}
}
function autoAddEllipsis(pStr,pLen){
var _ret = cutString(pStr,pLen);
var _cutFlag = _ret.cutflag;
var _cutStringn = _ret.cutstring;
if("1" == _cutFlag){
return _cutStringn;
}else{
return _cutStringn;
}
}
</script>
</body>
</html>
正则表达式验证内容