文章目录
- 自定义字符串校验函数
- 常用正则表达式
自定义字符串校验函数
校验字符串是否全由数字组成,是则返回true,否则返回false:
function isDigit(str) {var regExp = /^[0-9]{1,20}$/;// exec方法如果找到符合正则表达式的字符串,返回一个数组对象,否则返回nullif (!regExp.exec(str)) return false;return true;
}
欲了解正则表达式对象的方法 exec()
如何使用,请参阅《JavaScript(JS)中与正则表达式有关的方法介绍》。
匹配以英文字母开头,由英文字母、数字、“.”、“_”中的任意 5~20 个字符组成的字符串:
function isRegisterUserName(s) {
var regExp = /^[a-zA-Z]{1}([a-zA-Z0-9]|[._]){4,19}$/;
if (!patrn.exec(s)) return false
return true
}
匹配由 1~30 个英文字母组成的字符串:
function isTrueName(s) {
var patrn=/^[a-zA-Z]{1,30}$/;
if (!patrn.exec(s)) return false
return true
}
匹配由6~20个任意非空白字符组成的字符串:
function isPasswd(s) { var patrn=/^(\S){6,20}$/; if (!patrn.exec(s)) return false
return true
}
检验用户输入的身份证号码是否符合要求:
function check_card(){$('idCard').className = '';$('card_msg').innerHTML = '';var reg = /^\d{15}$|^\d{17}([0-9]|X|x)$/;if(!reg.test($F('idCard'))){$('card_msg').innerHTML = '格式不正确';$('idCard').className = 's2';return false;}return true;
}
常用正则表达式
业务需求 | 正则表达式 | 说明 |
---|---|---|
用户名 | /^[a-z0-9_-]{3,16}$/ | 匹配由 3 个到 16 个英文小写字母、数字、下划线、连接线中的任意字符组成的字符串;匹配小写英文字母、数字、下划线以及连接线中的任意一个字符,可以匹配 3 到 16 次,也就是至少匹配 3 次,最多匹配 16 次;匹配小写英文字母、数字、下划线以及连接线中的任意 3 个到 16 个字符;匹配小写英文字母、数字、下划线以及连接线中的 3 个到 16 个任意字符。两个正斜杠之间的内容才是正则表达式,正斜杠 / 只是用来标记表达式的首尾而已,类似于双引号的作用,有些地方并不使用 / 来标记正则式的首尾,而是使用双引号 "" 来标识首尾,所以 / 并没有实际的意义。 |
用户名 | /^[a-zA-Z]{1,30}$/ | 匹配 1 个到 30 个英文字母 |
用户名 | /^[a-zA-Z]{1}([a-zA-Z0-9]|[._]){4,19}$/ | 匹配以英文字母开头,由英文字母、数字、“.”、“_”中的任意 5~20 个字符组成的字符串 |
密码 | /^(\S){6,20}$/ | 匹配由6~20个任意非空白字符组成的字符串。这是密码常用的规则 |
密码 | /^[^\f\n\r\t\v]{6,18}$/ 或 /^\S{6,18}$/ | 匹配除了换页符、换行符、空白符、制表符、回车符以外的任意 6 个到 18 个字符。这是密码常用的规则 |
密码 | /^[a-z0-9_-]{6,18}$/ | 匹配小写英文字母、数字、下划线、连字符中任意 6 个到 18 个字符组成的字符串;匹配 6 个到 18 个小写英文字母、数字、下划线、连字符中任意字符组成的字符串。这样的密码规则不常用 |
密码 | /(?!^[0-9]+$)(?!^[A-z]+$)(?!^[^A-z0-9]+$)^[^\s\u4e00-\u9fa5]{6,16}$/ | 使用了顺序否定环视,表示匹配一个非全部是数字,非全是英文字母,且包含至少 1 个英文字母或者包含至少 1 个数字,由 6 个到 18 个除了空白字符和汉字以外的任意字符组成的字符串。这样的密码规则更加严谨。 |
电子邮箱 | /^([a-z0-9_\.-]+)@([\da-z\.-]+)\.([a-z\.]{2,6})$/ | @之前的部分,匹配小写英文字母、数字、下划线、半角句点以及连接线中的任意1个或多个字符;@和半角句点之间的部分,匹配数字、小写英文字母、英文句点以及连接线中的任意1个或多个字符;@之后的部分,匹配小写英文字母和英文句点中的任意2个到6个字符 |
电子邮箱 | /^[a-z\d]+(\.[a-z\d]+)*@([\da-z](-[\da-z])?)+(\.{1,2}[a-z]+)+$/ | 这个匹配地更加精准 |
电子邮箱 | /^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/ | 这个比较宽松 |
URL | /^(https?:\/\/)?([0-9a-z\.-]+)\.([a-z\.]{2,6})([\/\w \.-]*)*\/?$/ | https? ,是指 ? 前的 s 可有可无,(https?:\/\/)? 是指 http:// 或者 https:// 可有可无。要注意,\d 本是一个元字符,放在 [] 内就会变成普通字符 d ,如果写成 \\d ,则表示匹配 \ 或 d ,换句话说如果要使用 \d 元字符的含义,不能放在方括号 [] 中 |
URL | /^https?://([\w-]+.)+[\w-]+(/[\w-./?%&=]*)?$/ | sed ‘s/[\w]/liao/g’ test/text.txt |
IP 地址 | /((2[0-4]\d|25[0-5]|[01]?\d\d?)\.){3}(2[0-4]\d|25[0-5]|[01]?\d\d?)/ | |
IP 地址 | /^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/ | |
HTML 标签 | /^<([a-z]+)([^<]+)*(?:>(.*)<\/\1>|\s+\/>)$/ | |
查找注释内容 | (?<!http:|\S)//.*$ | 这是个逆序否定环视表达式,用来匹配注释部分的字符串,即匹配代码的注释部分 ,标识 // 的前面不能有 http: ,也不能有非空白字符 \S ,并且结尾紧跟行尾 $ ,这样的字符串才能匹配成功 |
Unicode 编码中的汉字范围 | /^[\u2E80-\u9FFF]+$/ | 用来查找匹配整行的汉字 |
汉字 | ^[\u4e00-\u9fa5]{1,}$ | [\u4e00-\u9fa5] 表示任意一个汉字字符,整个正则式表示匹配 1 个或者多个任意汉字,并且匹配到的汉字既在行首又在行尾 |
手机号码 | (\+86)?1\d{10} | + 是个特殊字符需要转义才能被视为一个普通字符,所以前面加个 \ 。(\+86)? 表示 +86 可有可无,即 0 个或者 1 个;\d{10} 匹配10个任意数字,匹配任意的10个数字 |
身份证 | /^\d{15}$|^\d{17}([0-9]|X|x)$/ |