JavaScript正则表达式

x33g5p2x  于2021-10-07 转载在 JavaScript  
字(4.6k)|赞(0)|评价(0)|浏览(491)

JavaScript正则表达式

介绍

定义正则表达式的 两种方法 第一种普通方式 第二种构造函数方式

var c= / 表达式/附加参数

注意 切记 不要 用引号 把 表达式 括起来 否则 失效
1.
var c=new RegExp(“表达式”,”附加参数”)

附加参数(可以省略)附加参数: g 全局匹配 i不区分大小写 m进行多行匹配

正则表达式符号

符号描述
/ 表达式内容 /代表开始和结束
^匹配字符串的开始
$匹配字符串的结束
\s任何空白字符
\S任何非空白字符
\d匹配一个数字字符,等价[0-9]
\D除了数字外的任何字符,等价[^0-9]
\w匹配一个数字,下划线或字母字符等价于[ A-Za-z0-9_ ]
\W任何非单字 字符 等价于[^A-Za-z0-9_]
.除了换行符(\n)之外的任意字符
{n}匹配前一项n次
{n,}匹配前一项n次,或多次
{n,m}匹配前一项至少n此,但是不能超过m次
/*匹配前一项0次 以上无限,等价于{0,}
+匹配前一项1次 以上无限 等价于{1,}
?匹配前一项0次或1次,也就是前一项是可选的 等价于{0,1}
我们可以用“或”来匹配单个字符多个可能的情况
[ ]字符集合。匹配所包含的任意一个字符 例如, [abc] 可以匹配 “plain” 中的 ‘a’。
[^ ]负值字符集合。匹配未包含的任意字符。例如, [^abc]可以匹配 “plain” 中的’p’。
[ - ]字符范围。匹配指定范围内的任意字符。例如,[a-z] 可以匹配 ‘a’ 到 ‘z’ 范围内的任意小写字母字符
[^ - ]负值字符范围。匹配任何不在指定范围内的任意字符。例如,[^a-z ]可以匹配任何不在 ‘a’ 到 ‘z’ 范围内的任意字符
(pattern)捕获该匹配的子表达式 比如 ([12][34]) 能匹配12 或者34 若要匹配括号字符 ( ),请使用"( )。

在js中 使用\ 反斜杠来进行字符转义 将特殊符号作为普通字符来进行匹配 反正只要是需要匹配符号 那么就都加上\ 肯定是没问题的如果想要匹配\ 那么需要\ =\

例如 在正则表达式中的$ 这个是结束符 但是 如果我想在表达式内使用 就可以通过反斜杠来转义

在比如: 点 用来匹配点字符而不是任何字符的通配符

正则表达式中 () [ ] 和 { } 区别

() 是提取子匹配, 比如(1[0-1]|[1-9]) 只能是 11 10 或者 1-9 这些数中一个

如果不使用() 就变成 3位数了 使用了 就只能出一个结果

[ ]是定义匹配的字符串 如[A-Z] 表示字符串要匹配的内容

{ }用来定义匹配长度 如\s{3} 表示匹配三个空格

可以发现没有 并且符合 那么我们可以使用多个表达式的方式来完成
if( pattern_1.test(str) && pattern_2.test(str) &&pattern_3.test(str) ) 下面有介绍test是干嘛的

演示

方法演示

exec()如果字符串中有匹配的值返回该匹配值,否则返回 null

var qa="asgfsd";
					var ss=/fs/;
					var qa_1=ss.exec(qa);
					alert(qa_1)

test() 从表达式中查询是否有此值 如果有就是true 否则 false

var qa="asgfsd";
					var ss_1=/fs/;  //不加上^ 和& 就是包含匹配 只要字符串内包含就行
					var qa_2=ss_1.test(qa);
					alert(qa_2)

JavaScript内 用于正则表达式的 字符串方法

match() 查找字符串里是否有指定的值 找了返回这个值 否则null

var str="my ska cat tjd";
				var reg=/cat/;
				var result=str.match(reg);
				alert(result)

search()查找 字符串里 是否有 指定的值 找了返回这个值的下标(从0开始) 否则-1

var str = "myskacattjd";
			var reg = /cat/;
			var resul_t = str.search(reg);
			alert(resul_t)

正则表达式字符串替换

replace() 如果不加上 g(全局匹配) 就只替换第一个

var st="mhy ad sad sad df dsad df ";
		var res=st.replace(/sad/,"huanmin");
		alert(res)

加上g后 满足条件 都替换

var st="mhy ad sad sad df dsad df ";
		var res_1=st.replace(/sad/g,"huanmin");
		alert(res_1)

表单验证

需要的HTML

<form method="get" action="#" id="myfom">
			<input type="text" id="name1"/>
			<input type="submit" value="提交" id="sb" />
	</form>

须是6个数字 不能是其他任何符号字母等

<script src="./jquery-3.4.1.js"></script>
		<script>
			$("#myfom").submit(function() {
				var c = /^\d{6}$/;
				var b = $("#name1").val();
				
				if (c.test(b) == false) {
					alert("错误")
					return false;
				}
				return true;
			})
		</script>

限制手机号必须是1 , 2 ,7开头 必须是数字 11位

<script src="./jquery-3.4.1.js"></script>
		<script>
			$("#myfom").submit(function() {
				var c = /^[137]\d{10}$/;
				var b = $("#name1").val();

				if (c.test(b) == false) {
					alert("错误")
					return false;
				}
				return true;
			})
		</script>

以下是常用的表达式

年龄必须在0-120 之间 包括0和120
var c=/^120|(1[0-1]|[1-9])\d|[0-9]$/;

出身日期

必须在 1900-1999 或者 2000 -20009 或者 2010-2020
var c=/^((19\d{2})|(200\d)|(2020))$/;

必须在 1-12 或者01-09 11 12

var c=/^(0[1-9]|[1-9]|1[0-2])$/;

必须在 1到31日 包括01-09

var c=/^((0[1-9]|[1-9])|([1-2]\d|3[0-1]))$/;

年月日合体 1900-2020 1-12 0-31 (分隔符是 - 或 / )

var c=/^((19\d{2})|(200\d)|(201[0-9])|(2020))[-\/](0[1-9]|[1-9]|1[0-2])[-/]((0[1-9]|[1-9])|([1-2]\d|3[0-1]))$/;

邮箱表达式

ashdjkqq@qq.com或者 sadasf@.asda.com.cn

不能少@ 不能 少点 结尾必须是 3位 或者两位
var c=/^\w+\@\w+\.(\w{2,3}|\w{2,3}\.\w{2,3})$/;

简单邮箱 asdas@qq.com

varc=/^\w+\@\w+(\.\w{2,3})$/

以字母开头 用户名由英文字母和数字组成的4-16位字符,

var c=/^[a-zA-Z][a-zA-Z0-9]{3,15}$/;

密码由英文字母和数字组成的4-10位字符

var c=/^[a-zA-Z0-9]{4,10}$/

高级验证失去焦点触发验证 (验证数字-字母-特殊字符的个数)

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8" />
		<title></title>

	</head>
	<body>

		<form method="get" action="#" id="myfom">
			<input type="text" id="mima" />
			<input type="submit" value="提交" id="sb" />
		</form>

		<script src="./jquery-3.4.1.js"></script>
		<script>
function validatePwd(password) {
	
    var  number = 0;  //数字个数
    var  letter=0 ;  //字母
    var character=0;  //特殊字符 个数
		//不能为空
	if(password.trim()===""||password.length==0){
		  alert("密码不能为空")
		return false;
	}
	//判断是否包含中文
    if (password.match(/[\u4E00-\u9FA5]/g)) {  
        alert("密码不能包含中文")
        return false;
    }
    if(password.match(/[0-9]/g)){ //判断数字
        number++;
    }
    if(password.match(/[a-z]/ig)){// 判断字母 不区分大小写
        letter++;
    }
    if(password.match(/[`~!@#$%^&*,.]/g)){//判断字符
        character++;
    }

	// 密码验证条件
	
	if(password.trim().length<6){//密码长度不能小于6位
	
	    return false;
	}
    if(number < 1){ //密码中必须至少有1个 数字
        return false;
    }
    if(letter < 1){ //密码中至少有1个字母
        return false;
    }

    if(character < 1){ //密码中必须至少有1个 特殊字符
        return false;
    }
    return true;
}

$("#mima").blur(function () {
    var pd= validatePwd($(this).val());
    if (!pd){
        alert("你的密码太过于简单了 请在密码中包含\n ` ~ ! @ # $ % ^ & * , . <br/> 0-9 a-zA-Z <br/>长度不小于6为 ")
        return false;
    }
})
		</script>
	</body>
</html>

相关文章