js正则表达式校验输入字符串是否是手机号码

js 如何校验手机号码呢?

手机号有如下规则:

(1)必须全为数字;

(2)必须是11位.(有人说还有10位的手机号,这里先不考虑);

(3)必须以1开头(有人见过以2开头的手机号吗?)

(4)第2位是34578中的一个.

js方法如下:

/***
 * check mobile phone:(1)must be digit;(2)must be 11
 * @param string
 * @returns {boolean}
 */
telRuleCheck2 = function (string) {
	var pattern = /^1[34578]\d{9}$/;
	if (pattern.test(string)) {
		return true;
	}
	console.log('check mobile phone ' + string + ' failed.');
	return false;
};

通过正则表达式来校验

页面代码如下:

<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title></title>
    <script type="application/javascript" src="jquery-1.11.1.js" ></script>
    <script type="application/javascript" src="comm.js" ></script>
</head>
<body>
<div class="reg_con" style="position:relative;">
    <label>联系电话</label>
    <input id="telphone" type="text" name="userExt.telphone" value="13800000000" class="inp" maxlength="13"/>

    <div id="telphone_tip" style="position:absolute;top:20px; color:#c00; font-weight:bold;">
    </div>
</div>
<script type="application/javascript" >
    $("#telphone").blur("blur",function(){
        var telphone = $("#telphone").val();
        if(telphone == ""){
            $("#telphone_tip").html("提示:联系电话不能为空");
        }
        else
        {
            if(telRuleCheck2(telphone)){
                $("#telphone_tip").html("");
            }
            else
            {
                $("#telphone_tip").html("联系电话格式不正确");
            };
        };
    });

</script>
</body>
</html>

界面如下:

 正则表达式说几点:

(1)^表示开头 ; $ 表示结尾;

(2)i表示忽略大小写;g表示全局匹配,而不是只匹配一次

(3)\d表示数字,即0123456789,\w表示26个字母;\s表示空格Tab换行等

 

进行web前端开发,会经常遇到校验文本框内容的情形.比如校验用户输入的手机号是否合法.

其实我们可以从根本上减少用户犯错的机会,比如文本框只能输入数字,若输入非数字字符,则马上被删除.

(现在让用户填写日期时都不会让用户手敲了,而是让用户从下拉框中选择,这同样是为了减少用户犯错的机会)

界面:

 第一个文本框,输入字母时会立即被替换为空字符串.

核心js方法

/*
 * 只能输入正整数,不能有小数点
 *
 */
onlyIntegerKeyUp=function(e){
	if(e===undefined){
		e=window.event;
	}
	var obj=e.srcElement?e.srcElement:e.target;
	var pattern = /[^\d]/ig;
	var val=obj.value;
	if(pattern.test(val)) {
		var i=getCursortPosition(e);
		obj.value=val.replace(pattern,'');
		setCaretPosition(e,i);
	}
};
/*******************************************************************************
 * 获取光标位置
 *
 * @param ctrl
 * @returns {Number}
 */
getCursortPosition=function(event) {// 获取光标位置函数
	if (event === undefined || event === null) {
		event = arguments.callee.caller.arguments[0] || window.event;
	}
	var obj = event.srcElement?event.srcElement:event.target;
	var CaretPos = 0;	// IE Support
	if (document.selection) {
		obj.focus ();
		var Sel = document.selection.createRange ();
		Sel.moveStart ('character', -obj.value.length);
		CaretPos = Sel.text.length;
	} else if (obj.selectionStart || obj.selectionStart == '0'){
		// Firefox support
		CaretPos = obj.selectionStart;
	}

	return (CaretPos);
};
/*******************************************************************************
 * 设置光标位置
 *
 * @param ctrl
 * @returns {Number}
 */
setCaretPosition=function(event, pos){// 设置光标位置函数
	if (event === undefined || event === null) {
		event = arguments.callee.caller.arguments[0] || window.event;
	}
	var obj = event.srcElement?event.srcElement:event.target;
	if (pos > 0) {
		pos = pos - 1;//因为把不匹配的字符删除之后,光标会往后移动一个位置
	}
	if(obj.setSelectionRange){
		obj.focus();
		obj.setSelectionRange(pos,pos);
	} else if (obj.createTextRange) {
		var range = obj.createTextRange();
		range.collapse(true);
		range.moveEnd('character', pos);
		range.moveStart('character', pos);
		range.select();
	}
};
/*
 * 只能输入数字和字母
 *
 */
onlyNumAndAlphKeyUp=function(event){
	if(event===undefined){
		event=window.event;
	}
	var obj=event.srcElement?event.srcElement:event.target;
	var pattern = /[^\w]/ig;
	if(pattern.test(obj.value)) {
		var i=getCursortPosition(event);
		obj.value=obj.value.replace(pattern,'');
		setCaretPosition(event,i);
	}
};

页面代码:

<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title></title>
    <script type="application/javascript" src="jquery-1.11.1.js"></script>
    <script type="application/javascript" src="comm.js"></script>
</head>
<body>
只能输入数字: <input type="text" onkeyup="onlyIntegerKeyUp(event)"/><br>
<br>
只能输入数字和字母: <input type="text" onkeyup="onlyNumAndAlphKeyUp(event)"/><br>
</body>
</html>
时间: 2024-11-03 19:08:36

js正则表达式校验输入字符串是否是手机号码的相关文章

写js正则表达式,去除字符串的首尾的逗号,怎么写?

问题描述 写js正则表达式,去除字符串的首尾的逗号,怎么写? 写js正则表达式,去除字符串的首尾的逗号,怎么写???????????????????? 解决方案 <script language="JavaScript"> <!-- String.prototype.Trim=function(){ return this.replace(/^,*|,*$/g,'') } alert(",234324,".Trim()) //--> <

js如何判断输入字符串长度_javascript技巧

js判断输入字符串长度(汉字算两个字符,字母数字算一个) 文本输入时,由于数据库表字段长度限制会导致提交失败,因此想到了此方法验证. 废话不多说上代码: <html> <head> <title>js判断输入字符串长度(汉字算两个字符,字母数字算一个)</title> <style type="text/css"> .pbt { margin-bottom: 10px; } .ie6 .pbt .ftid a, .ie7 .p

利用js正则表达式校验正数、负数、和小数

话不多少,直接附上代码实例,仅供参考 <!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> <title>&l

Java正则表达式校验邮箱和手机号

import java.util.regex.Matcher; import java.util.regex.Pattern; public class CheckMobileAndEmail { /** * 验证邮箱地址是否正确 * @param email * @return */ public static boolean checkEmail(String email){ boolean flag = false; try{ String check = "^([a-z0-9A-Z]+[

javascript-求一js正则表达式:校验是否是3位字母+3位数字!

问题描述 求一js正则表达式:校验是否是3位字母+3位数字! 小弟的正则表达式不是很清楚,思路迷迷糊糊的. 题目要求: 校验字符串:3位大写字母+3位数字,长度为6;且必须是开头3位为大写字母,后面三位是数字.比如:某航段的编号是:PEK001! 下面是js代码: var regOffice = /^[A-Z]{3}(d){3}{1}/g; 解决方案 /^[A-z]{3}d{3}$/ 解决方案二: [A-Z]{3}d{3} 解决方案三: [A-Z]{3}d{3} 解决方案四: 经过实验,得到最后

JS正则表达式获取字符串中特定字符的方法

 这篇文章主要介绍了JS正则表达式获取字符串中得特定字符,通过replace的回调函数获取,需要的朋友可以参考下 实现的效果:在字符串中abcdefgname='test'sddfhskshjsfsjdfps中获取name的值test    实现的机制:通过replace的回调函数获取.    代码:  代码如下: var str = "abcdefgname='test'sddfhskshjsfsjdfps";  var reg = /name='((w|-|s)+)/ig;  st

js正则表达式 验证百分数,要求只能输入0%-100% 之间的数

问题描述 js正则表达式 验证百分数,要求只能输入0%-100% 之间的数 填写举例:0%.50%.100%,可能是0%-100%其中的任何数字,最多小数点后保留2位,例如97.51%/98.32%.? 解决方案 ^(100|[1-9]d|d)(.d{1,2})?%$ 解决方案二: Js中运用正则表达式验证输入是否有特殊字符 . 解决方案三: ^(100|[1-9]d|d)(.d{1,2})?%$ 解决方案四: ^([1-9]{1}[0-9]{0,1}|0|100)(.d{1,2}){0,1}%

sql 变量-利用js获取页面用户输入字符串,作为变量进行CQL语句查询

问题描述 利用js获取页面用户输入字符串,作为变量进行CQL语句查询 我用js编写了一个,从页面获取了用户输入的两个字符串,一个作为键,一个作为值,想在js中利用CQL语句进行select * from 表名 where [键名]=值,这样的查询.查询出所有符合条件的查询结果.但是,变量怎样写都不对,换成固定的属性和值,语句就可以运行,求各位大神帮忙!!!! 解决方案 注意变量拼接,不要放到sql语句里面 var field="abc",value="xx" var

https-以空格和换行和字符串结尾区分的JS正则表达式

问题描述 以空格和换行和字符串结尾区分的JS正则表达式 1.以https : // 和http : // 开头 2.空格,换行和字符串结尾 3.中间可以为任何字符 例如: "符合标准的字符串 符合标准的字符串 符合标准的字符串" 可以匹配出来三个 解决方案 sorry,更新一下: var data = "balabalbal"; var re= /https?://S+(s|n)/gi; var arrMactches = data.match(re) for (v