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));

  

 

posted @ 2019-03-01 16:50  Lolita_web  阅读(1087)  评论(0编辑  收藏  举报