一、首先了解传统的验证方式
1、非空验证
if(emall==""){
alert("Emall 不能为空")
return false
}
2、查找字符串首次出现的位置
var str = "this is JavaScript"
var selectFirst = str.indexOf("Java");
console.log(selectFirst);
返回值为 8
3、根据字符串的特殊符号来查找
form.function(){
var mail=email.value;
if(mail==""){
alert("Email不能为空");
return false;
}
if (mail.indexOf("@") == -1) {
alert("Email格式不正确\n必须包含@");
return false;
}
if (mail.indexOf(".") == -1) {
alert("Email格式不正确\n必须包含.");
return false;
}
return true;
}
4、验证字符串的长度
if(pwd.length<6){
alert("密码必须等于或者大于6个字符")
return false
}
5、判断字符串是否有数字
使用for循环和substring()
方法依次截断单个字符,再判断每个字符是否是数字
for (var i = 0; i < user.length; i++) {
var j = user.substring(i, i + 1);
if (isNaN(j) == false) {
alert("姓名中不能包含数字");
return false;
}
}
二、 正则
为什么需要正则
1、简洁的代码
2、严谨的验证输入的内容
var reg= /^\w+@\w+(\.[a-zA-Z]{2,3}){1,2}$/;
if(reg.test(email) ==false){
$email_prompt.html("电子邮件格式不正确,请重新输入");
return false;
}
三、正则表达式的语法
构造函数:var reg=new RegExp(pattern,modifiers);
字面量:var reg=/pattern/modifiers;
/ / 相当于正则的开始和结束
常用的表达式
[a-z] 查找任何从小写 a 到小写 z 的字符
[A-Z] 查找任何从大写 A 到大写 Z 的字符
[0-9] 查找任何从 0 至 9 的数字
[abc] 查找括号内的任意一个字符
[^abc] 查找除了括号内的任意字符
常用的元素符
\w 匹配数字、字母、下划线
\W 匹配非数字、字母、下划线
\d 匹配数字
\D 匹配非数字
\s 匹配空白字符(空格、换行)
\S 匹配非空白字符
\n 匹配换行符
^ 匹配一个输入或一行的开头,/^a/匹配"an A",而不匹配"An a"
$ 匹配一个输入或一行的结尾,/a$/匹配"An a",而不匹配"an A"
常用的限定符
*
匹配前面的子表达式零次或多次
+
匹配前面的子表达式一次或多次
? 匹配前面的子表达式零次或一次
{n} 匹配确定的 n 次
{n,} 至少匹配n 次
{n,m} 最少匹配 n 次且最多匹配 m 次
3、正则表达式方法
检测一个字符串是否与正则相匹配
reg.test(string)
reg.exec(string)
var str="abc";
var reg=/[a-z]/;
var reg=/[A-Z]/;
onsole.log(reg.test(str));
console.log(reg.exec(str));
4、正则表达式的方法
/search()方法-使用正则表达式来检索字符串中的kgc/
var str=“hello kgc”;
console.log(str.search(/kgc/));
console.log(str.search(/KGC/));
console.log(str.search(/KGC/i));
/match()方法-使用正则表达式来检索字符串中的所有数字/
var str="1 and 2 and 3";
console.log(str.match(/\d/));
console.log(str.match(/kgc/));
console.log(str.match(/\d/g));
/replace()方法-使用 “kgc” 替换字符串中的 “huyang”/
var str="hello huyang";
console.log(str.replace(/huyang/,"kgc"));
var str="hello huyang, How are you?huyang";
console.log(str.replace(/huyang/g,"kgc"));
/split()方法-把单词分割为字母/
console.log("hello".split(""));
console.log("hello".split("",3));
三、 验证实例
/验证26个英文字母组成的字符串/
var str="sgfhdfGIYYjhj";
var reg=/^[a-zA-Z]+$/; //一次或多次 "+"
console.log(reg.test(str));
/验证由数字和26个英文字母组成的字符串/
var str="abc123DFjh";
var reg=/^[0-9a-zA-Z]+$/;
console.log(reg.test(str));
/验证由数字、字母、下划线组成的字符串/
var str="abc_123_DFjh";
var reg=/^\w+$/;
console.log(reg.test(str));
/验证汉字/
var str="课工场";
var reg=/^[\u4e00-\u9fa5]+$/
console.log(reg.test(str));
例子:
如何将字符串中的数字加上方括号
var str='abc345efg';
var reg1 = /\d/g;
var arr = str.split('');
for(var i=0;i<arr.length;i++)
{
if(isNaN(arr[i])==false)
{
arr[i] = '['+arr[i]+']';
}
}
str2 = arr.join('');
alert(str2);
四、
常用的验证方式
1、验证邮箱:/^[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+$/
2、验证手机号码:/^1[34578][0-9]{9}$/
3、清空所有空格 :/\s+/g
4、验证身份证:/(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/
5、验证真实姓名:/^[\u4e00-\u9fa5]{2,4}$/;
6、用户名正则,4到16位(字母,数字,下划线,减号):/^[a-zA-Z0-9_-]{4,16}$/;
7、密码强度正则:
/^.*(?=.{6,})(?=.*\d)(?=.*[A-Z])(?=.*[a-z])(?=.*[!@#$%^&*? ]).*$/
8、正整数正则:/^\d+$/;
9、负整数正则:/^-\d+$/;
10、整数正则: /^-?\d+$/;
11、数字正则:
1、正数正则 /^\d*.?\d+$/;
2、负数正则 /^-\d*.?\d+$/;
3、数字正则 /^-?\d*.?\d+$/;
12、 QQ号码正则:/^[1-9][0-9]{4,10}$/;
13、 微信号正则:/^[a-zA-Z]([-_a-zA-Z0-9]{5,19})+$/;
14、车牌号正则: /^[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领A-Z]{1}[A-Z]{1}[A-Z0-9]{4}[A-Z0-9挂学警港澳]{1}$/
15、 包含中文正则:/[\u4E00-\u9FA5]/;