`
xiangxuehai_jiaer
  • 浏览: 90191 次
  • 性别: Icon_minigender_2
  • 来自: 西安
社区版块
存档分类
最新评论
收藏列表
标题 标签 来源
正则表达式 正则表达示校验邮箱、手机、用户名、身份证、数字、中文
说明:('#id')取 控件ID    ('#id').val()取控件里的值  


----//校验是否全由数字组成
	function isDigit(s){
	var  s=$('#didit').val();	
	var patrn=/^[0-9]{1,20}$/;
	if (!patrn.exec(s)) {
	   alert('请重新输入数字!');
	     $('#didit').val("");//清空值
	   $('#didit').focus();//把光标聚焦到输入框
	  
	   return ;
	  }
	alert('校验通过!');
	return ;
	}



----//校验登录名:只能输入5-20个以字母开头、可带数字、“_”、“.”的字串
	function isRegisterUserName()
	{
	var  s=$('#uname').val();	
	var patrn=/^[a-zA-Z]{1}([a-zA-Z0-9]|[._]){4,19}$/;
	if (!patrn.exec(s)) {
	   alert('请重新输入用户名!');
	     $('#uname').val("");//清空值
	   $('#uname').focus();//把光标聚焦到输入框
	  
	   return ;
	  }
	alert('校验通过!');
	return ;
	}






----//校验用户姓名:只能输入1-30个以字母开头的字串
function isTrueName()
{
var  s=$('#uname2').val();
var patrn=/^[a-zA-Z]{1,30}$/;
if (!patrn.exec(s)) {
	   alert('请重新输入用户名!');
	     $('#uname2').val("");//清空值
	   $('#uname2').focus();//把光标聚焦到输入框
	  
	   return ;
	  }
	alert('校验通过!');
	return ;
	}





----//校验密码:只能输入6-20个字母、数字、下划线
function isPasswd(s)
{
var patrn=/^(\w){6,20}$/;
if (!patrn.exec(s)) return false
return true
}




---//校验普通电话、传真号码:可以“+”开头,除数字外,可含有“-”
function isTel(s)
{
//var patrn=/^[+]{0,1}(\d){1,3}[ ]?([-]?(\d){1,12})+$/;
var patrn=/^[+]{0,1}(\d){1,3}[ ]?([-]?((\d)|[ ]){1,12})+$/;
if (!patrn.exec(s)) return false
return true
}




---//校验手机号码:必须以数字开头,除数字外,可含有“-”
function isMobil(s)
{
var patrn=/^[+]{0,1}(\d){1,3}[ ]?([-]?((\d)|[ ]){1,12})+$/;
if (!patrn.exec(s)) return false
return true
}





----//校验邮政编码
function isPostalCode(s)
{
//var patrn=/^[a-zA-Z0-9]{3,12}$/;
var patrn=/^[a-zA-Z0-9 ]{3,12}$/;
if (!patrn.exec(s)) return false
return true
}



------加了一个验证中文的函数
如下:
//批次名称 
      
      var reg=/^[\u0391-\uFFE5]+$/;   
      if(!reg.test($('#batchName').val())){
      alert('批次名称只能是中文,不能有其它字符或空格!');
       return false;
      }



---//校验搜索关键字
function isSearch(s)
{
var patrn=/^[^`~!@#$%^&*()+=|\\\][\]\{\}:;\'\,.<>/?]{1}[^`~!@$%^&()+=|\\\][\]\{\}:;\'\,.<>?]{0,19}$/;
if (!patrn.exec(s)) return false
return true
}




---//校验IP
function isIP(s) //by zergling
{
var patrn=/^[0-9.]{1,20}$/;
if (!patrn.exec(s)) return false
return true
} 



---//2、时间类
2.1 短时间,形如 (13:04:06)
function isTime(str)
{
var a = str.match(/^(\d{1,2})(?(\d{1,2})\2(\d{1,2})$/);
if (a == null) {alert('输入的参数不是时间格式'); return false;}
if (a[1]>24 || a[3]>60 || a[4]>60)
{
alert("时间格式不对");
return false
}
return true;
}






2.2 短日期,形如 (2003-12-05)
function strDateTime(str)
{
var r = str.match(/^(\d{1,4})(-|\/)(\d{1,2})\2(\d{1,2})$/);
if(r==null)return false;
var d= new Date(r[1], r[3]-1, r[4]);
return (d.getFullYear()==r[1]&&(d.getMonth()+1)==r[3]&&d.getDate()==r[4]);
}

var str=$('#gainTime').val();
    var patrn=/^(\d{1,4})(-|\/)(\d{1,2})\2(\d{1,2})$/;   
    if(!str.match(patrn)){
       alert('日期格式不正确!');
        $("#gainTime").val("");
       $("#gainTime").focus();
        return false;
      }

// 短日期,形如 (2003-12-05)判断日期格式符合YYYY-MM-DD标准 
function   checkDate(strDate){ 
	re=/^(\d{1,4})(-|\/)(\d{1,2})\2(\d{1,2})$/;
	if(re.test(strDate)){ 
	  return true;
	  }
	 return false
}



2.3 长时间,形如 (2003-12-05 13:04:06)
function strDateTime(str)
{
var reg = /^(\d{1,4})(-|\/)(\d{1,2})\2(\d{1,2}) (\d{1,2})\d{1,2})\d{1,2})$/;
var r = str.match(reg);
if(r==null)return false;
var d= new Date(r[1], r[3]-1,r[4],r[5],r[6],r[7]);
return (d.getFullYear()==r[1]&&(d.getMonth()+1)==r[3]&&d.getDate()==r[4]&&d.getHours()==r[5]&&d.getMinutes()==r[6]&&d.getSeconds()==r[7]);
}




--//Email校验

<script type="text/javascript" src="jquery.js"></script>//一定要把jquery.js这个库加载上来
<script language="javascript" type="text/javascript">


function checkemail()
{
   //var temp = document.getElementById("tbEmail");//这句可以用下面的替换
   var temp =$('#email').val();

  var myreg =/^(?:[a-z\d]+[_\-\+\.]?)*[a-z\d]+@(?:([a-z\d]+\-?)*[a-z\d]+\.)+([a-z]{2,})+$/i;

  if(temp=="")
      {
            alert("plese input email");
      }
        else
      {
           if(temp!="")
              {
               if(!myreg.exec(temp))
                    {                        
                       alert('提示\n\n请输入有效的E_mail!');                      
                     $('#email').focus();//把光标聚焦到输入框
                      return false;
                    }
                    else{
                            alert("good mail");    
                         }
               }
       }
 }


</script>

//************************
连接触发
	<a href="javascript:doSubmit();" ></a>

	按键触发
	<input type="button" value="Submit" onclick="return isTrueName();"/>
JS继承 浅谈js的继承
<html>
<head>
<script type="text/javascript">
	/**
	动物,父类
	*/
	function Animal(name) 
	{
		this.name = name;
		this.sleep = function () 
		{
			alert("name is :" + this.name +" ,\r\n it's a sleep function 。\r\n the caller is:" + this.sleep.caller);
		}
 	}
 	/**
 		子类,老虎
	*/
	function Tiger() 
	{
	    var name = "tiger_onedear";
	    Animal.call(this , name);   //将animal对象作为this指针调用tiger函数,调用父构造函数。换句话说就是tiger继承animal。
	}
	/**
		子类,小鸟
	*/
	function Bird() 
	{
		var name = "bird_onedear";
	}
	Bird.prototype=new Animal("bird_onedear"); //建一个积累的对象作为子类原型的原型(原型继承),个人认为也可以勉强说是bird继承animal
	Bird.prototype.fly= function () {alert("i am fly" );} //对bird对象原型增加一个方法,这样bird与bird的子类都能用上
	
	function testTiger() 
	{
		new Tiger().sleep();  //tiger类定义处并没有sleep方法,但由于继承了animal类,所以子类调用正常
	}
	
	function testBird() 
	{
		new Bird().sleep();
		new Bird().fly();
	}	
</script>
</head>
<body>
<input type="button" onclick="testTiger();" value="TtestTigeriger"/>
<input type="button" onclick="testBird();" value="testBird"/>
</body>
</html>

callee属性 js中的apply/call/caller/callee/bind
//callee可以打印其本身
function calleeDemo() {
     alert(arguments.callee);
}
//用于验证参数
function calleeLengthDemo(arg1, arg2) {
    if (arguments.length==arguments.callee.length) {
         window.alert("验证形参和实参长度正确!");
        return;
     } else {
         alert("实参长度:" +arguments.length);
         alert("形参长度: " +arguments.callee.length);
     }
}
//递归计算
var sum = function(n){
  if (n <= 0)                        
  return 1;
  else
    return n +arguments.callee(n - 1)
}
数据结构与算法分析 -- 二叉树的实现,遍历,与应用 数据结构与算法分析 -- 二叉树的实现,遍历,与应用
package com.base.tree;

import java.util.Stack;

public class MyTreeTest {
	public static void main(String[] args) {
		MyStack mystack=new MyStack();
		MyTree tree=mystack.postfixhandler("ab+cde+**");
		MyTree.preorder(tree);//先序输出
	}
}

class MyTree {
	private String data;
	private MyTree left;
	private MyTree right;

	public MyTree(String data) {
		this.data = data;
	}

	public void setLeft(MyTree left) {
		this.left = left;
	}

	public void setRight(MyTree right) {
		this.right = right;
	}
	
	public MyTree getLeft() {
		return left;
	}

	public MyTree getRight() {
		return right;
	}

	public String getData() {
		return data;
	}
	
	/**
	 * 先序遍历 左-中-右
	 */
	public static void preorder(MyTree tree){
		if(tree==null)return;
		System.out.println(tree.getData());
		preorder(tree.getLeft());
		preorder(tree.getRight());
	}
	
	/**
	 * 后序遍历 左-右-中(data)
	 */
	public static void postorder(MyTree tree){
		if(tree==null)return;
		postorder(tree.getLeft());
		postorder(tree.getRight());
		System.out.println(tree.getData());
	}
	
	/**
	 * 中序遍历 左-中-右
	 */
	public static void inorder(MyTree tree){
		if(tree==null)return;
		postorder(tree.getRight());
		System.out.println(tree.getData());
		postorder(tree.getLeft());
	}
}

class MyStack {
	/**
	 * 后缀表达式处理方法
	 * 
	 * @param postfix
	 */
	public MyTree postfixhandler(String str) {
		Stack<MyTree> result = new Stack<MyTree>();// 栈对象
		for (int i = 0; i < str.length(); i++) {
			// 是否为运算符
			if ("+-*/".indexOf(str.charAt(i) + "") == -1) {
				result.push(new MyTree(str.charAt(i) + ""));
			} else {
				// 栈为空,则无法后续操作
				if (!result.isEmpty()) {
					// 将之前的树出栈,构造新的树,并入栈操作
					MyTree root = new MyTree(str.charAt(i) + "");					
					root.setRight(result.pop());
					root.setLeft(result.pop());
					result.push(root);
				}
			}
		}
		return result.pop();
	}
}
生成范围内的随机数 java生成随机数(控制范围)
//Math.random()*(tonum-fromnum))+fromnum; 
double a =Tool.sTd((Math.random()*(80-50))+50);//50-80之间 
System.out.println(a);
//tonum和fromnum是范围值
聊天室客户端(输入bye可退出聊天室) java多线程控制台聊天室
package tf.thread;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;

public class ChatClient {
	private static final int PORT = 8888;
	private static ExecutorService exec = Executors.newCachedThreadPool();

	public static void main(String[] args) throws Exception {
		new ChatClient();
	}

	public ChatClient() {
		try {
			Socket socket = new Socket("192.168.1.120", PORT);
			exec.execute(new Sender(socket));
			System.out
					.println("【" + socket.getInetAddress() + "】您好,欢迎来到阿飞聊天室!");

			BufferedReader br = new BufferedReader(new InputStreamReader(socket
					.getInputStream()));
			String msg;
			while ((msg = br.readLine()) != null) {
				System.out.println(msg);
			}
		} catch (Exception e) {

		}
	}

    /**
	 * 客户端线程获取控制台输入消息
	 */
	static class Sender implements Runnable {
		private Socket socket;

		public Sender(Socket socket) {
			this.socket = socket;
		}

		public void run() {
			try {
				BufferedReader br = new BufferedReader(new InputStreamReader(
						System.in));
				PrintWriter pw = new PrintWriter(socket.getOutputStream(), true);
				String msg;

				while (true) {
					msg = br.readLine();
					pw.println(msg);

					if (msg.trim().equals("bye")) {
						pw.close();
						br.close();
						exec.shutdownNow();
						break;
					}
				}
			} catch (Exception e) {
				e.printStackTrace();
			}
		}
	}
}

聊天室服务器端 java多线程控制台聊天室
package tf.thread;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;

public class ChatServer {
	private static final int PORT = 8888; // 端口号
	private static List<Socket> list = new ArrayList<Socket>(); // 保存连接对象
	private ExecutorService exec;
	private ServerSocket server;

	public static void main(String[] args) {
		new ChatServer();
	}

	public ChatServer() {
		try {
			server = new ServerSocket(PORT);
			exec = Executors.newCachedThreadPool();
			System.out.println("服务器已启动!");

			Socket client = null;
			while (true) {
				client = server.accept(); // 接收客户连接
				list.add(client);
				exec.execute(new ChatTask(client));
			}
		} catch (IOException e) {
			e.printStackTrace();
		}
	}

	static class ChatTask implements Runnable {
		private Socket socket;
		private BufferedReader br;
		private PrintWriter pw;
		private String msg;

		public ChatTask(Socket socket) throws IOException {
			this.socket = socket;
			br = new BufferedReader(new InputStreamReader(socket
					.getInputStream()));
			msg = "【" + this.socket.getInetAddress() + "】进入聊天室!当前聊天室有【"
					+ list.size() + "】人";

			sendMessage();
		}

		public void run() {
			try {
				while ((msg = br.readLine()) != null) {
					if (msg.trim().equals("bye")) {
						list.remove(socket);
						br.close();
						pw.close();
						msg = "【" + socket.getInetAddress() + "】离开聊天室!当前聊天室有【"
								+ list.size() + "】人";
						socket.close();

						sendMessage();
						break;
					} else {
						msg = "【" + socket.getInetAddress() + "】说:" + msg;
						sendMessage();
					}
				}
			} catch (IOException e) {
				e.printStackTrace();
			}
		}

		/**
		 * 群发消息给聊天室的所有人
		 */
		private void sendMessage() throws IOException {
			System.out.println(msg);
			for (Socket client : list) {
				pw = new PrintWriter(client.getOutputStream(), true);
				pw.println(msg);
			}
		}
	}
}

Global site tag (gtag.js) - Google Analytics