18. 面试题-正则表达式
用户名、整数、电子邮件地址(Email)、手机号码正则。表单验证必备!有错误欢迎指正!
1)用户名正则
var username=/^[A-z0-9_-]{6,16}$/; // 6到16位(大小字母,数字,下划线,减号)
2)整数正则
var posPattern=/^\d+$/; //匹配正整数 var negPattern=/^-\d+$/; //匹配负整数 var integer=/^-?\d+$/; //匹配整数
3)电子邮件地址正则
var email=/^[A-z0-9_\-\.]+\@[A-z0-9_\-\.]+\.([A-z]{2,4})$/;
4)手机号码正则
var phoneNum=/^[1-9][0-9]{1,10}$/; //简陋写法 var phoneNum=/^((13[0-9])|(14[5|7])|(15([0-3]|[5-9]))|(18[0,5-9]))\d{8}$/; //精确写法
5)给一个连字符串例如:get-element-by-id转化成驼峰形式。
var str = "get-element-by-id"; var reg = /-\w/g; // 匹配横杆以及之后的一个字符,全局匹配 console.log(str.replace(reg,function($0){ return $0.slice(1).toUpperCase(); // 匹配到到是-e -b -i 形式截取后一个字符转成大写 }));
6)匹配二进制数字
var str = "10101111"; var reg = /^[01]+$/g; console.log(reg.test(str));
7)非零的十进制数字 (有至少一位数字, 但是不能以0开头)
var str = "81"; var reg = /^[1-9][0-9]?$/g; console.log(reg.test(str));
8)匹配一年中的12个月
var str = "12"; var reg = /^(0?[1-9]|1[0-2])$/g; console.log(reg.test(str));
9)匹配qq号最长为13为
var str ="10009093283333"; var reg = /^[1-9][0-9]{4,12}$/g; console.log(reg.test(str));
10)匹配常见的固定电话号码
var str = "000-12344562"; // \(? 匹配左括号一次或0次然后以0开头后面加两个数字,再匹配右括号或空格或减号一次或0次,随后匹配8个数字 var reg = /\(?0\d{2}[) -]?\d{8}/g; console.log(str.match(reg));
11)匹配ip地址
var str = "255.221.221.12"; // [01]?\d\d?表示匹配小于199的数,可以说两位数或一位数,2[0-4]\d表示从200到249,配合25[0-5]就表示小于255的数了。 var reg = /(([01]?\d\d?|2[0-4]\d|25[0-5])\.){3}([01]?\d\d?|2[0-4]\d|25[0-5])/g; console.log(str.match(reg));
12)匹配用尖括号括起来的以a开头的字符串
var str = "<a herf='www.baidu.com'>"; var reg = /<a[^>]+>/g; console.log(str.match(reg));
13)分割数字每三个以一个逗号划分
var str = "12345678901"; function numSplit(str){ var re = /(\d)(?=(\d{3})+$)/g; //(\d{3})+$ 的意思是连续匹配 3 个数字,且最后一次匹配以 3 个数字结尾。 //要找到所有的单个字符,这些字符的后面跟随的字符的个数必须是3的倍数,并在符合条件的单个字符后面添加, return str.replace(re,'$1,'); } console.log(numSplit(str));