JS面试题-正则表达式常见面试题

1.给一个连字符串例如: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 形式截取后一个字符转成大写 
}));

2.匹配二进制数字

var str = "10101111";
var reg = /^[01]+$/g;
console.log(reg.test(str));

3.非零的十进制数字 (有至少一位数字, 但是不能以0开头)

var str = "81";
var reg = /^[1-9][0-9]?$/g;
console.log(reg.test(str));

4.匹配一年中的12个月

var str = "12";
var reg = /^(0?[1-9]|1[0-2])$/g;
console.log(reg.test(str));

5.匹配qq号最长为13为

var str ="10009093283333";
var reg = /^[1-9][0-9]{4,12}$/g;
console.log(reg.test(str));

6.匹配常见的固定电话号码

var str = "000-12344562";
//  \(? 匹配左括号一次或0次然后以0开头后面加两个数字,再匹配右括号或空格或减号一次或0次,随后匹配8个数字
var reg = /\(?0\d{2}[) -]?\d{8}/g;
console.log(str.match(reg));

7.匹配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));

8.匹配用尖括号括起来的以a开头的字符串

var str = "<a herf='www.baidu.com'>";
var reg = /<a[^>]+>/g;
console.log(str.match(reg));

9.分割数字每三个以一个逗号划分

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

10.判断字符串是否包含数字

function containsNumber(str) {
    
    
    var regx = /\d/;
    return regx.text(str);
}

11.判断电话号码

function isPhone(tel) {
    
    
    var regx = /^1[34578]\d{9}$/;
    return regx.test(tel);
}

12.判断是否符合指定格式

给定字符串str,检查其是否符合如下格式

  1. XXX-XXX-XXXX
  2. 其中X为Number类型
function matchesPattern(str) {
    
    
    return /^(\d{
    
    3}-){
    
    2}\d{
    
    4}&/.test(str);
}

13.判断是否符合USD格式

给定字符串 str,检查其是否符合美元书写格式

  1. 以 $ 开始
  2. 整数部分,从个位起,满 3 个数字用 , 分隔
  3. 如果为小数,则小数部分长度为 2
  4. 正确的格式如:$1,023,032.03 或者 $2.03,错误的格式如:$3,432,12.12 或者 $34,344.3**
function isUSD(str) {
    
    
    var regx = /^\$\d{1,3}(,\d{3})*(\.\d{2})?$/;
    return regx.test(str);
}

14.JS实现千位分隔符

function format(number) {
    
    
    var regx = /\d{1,3}(?=(\d{3})+$)/g;
    return (number + '').replace(regx, '$&,')  // $&表示与regx相匹配的字符串
}

15.获取 url 参数

获取 url 中的参数

  1. 指定参数名称,返回该参数的值 或者 空字符串
  2. 不指定参数名称,返回全部的参数对象 或者 {}
  3. 如果存在多个同名参数,则返回数组
function getUrlParam(url, key) {
    
    
    var arr = {
    
    };
    url.replace(/\??(\w+)=(\w+)&?/g, function(match, matchKey, matchValue) {
    
    
       if (!arr[matchKey]) {
    
    
           arr[matchKey] = matchValue;
       } else {
    
    
           var temp = arr[matchKey];
           arr[matchKey] = [].concat(temp, matchValue);
       }
    });
    if (!key) {
    
    
        return arr;
    } else {
    
    
        for (ele in arr) {
    
    
            if (ele = key) {
    
    
                return arr[ele];
            }
        }
        return '';
    }
}

16.验证邮箱

function isEmail(email) {
    
    
    var regx = /^([a-zA-Z0-9_\-])+@([a-zA-Z0-9_\-])+(\.[a-zA-Z0-9_\-])+$/;
    return regx.test(email);
}

17.验证身份证号码

身份证号码可能为15位或18位,15位为全数字,18位中前17位为数字,最后一位为数字或者X

function isCardNo(number) {
    
    
    var regx = /(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/;
    return regx.test(number);
}

18.匹配汉字

var regx = /^[\u4e00-\u9fa5]{0,}$/;

19.去除首尾的’/’

var str = '/asdf//';
str = str.replace(/^\/*|\/*$/g, '');

20.判断日期格式是否符合 '2017-05-11’的形式,简单判断,只判断格式

var regx = /^\d{4}\-\d{1,2}\-\d{1,2}$/

21.判断日期格式是否符合 '2017-05-11’的形式,严格判断(比较复杂)

var regx = /^(?:(?!0000)[0-9]{4}-(?:(?:0[1-9]|1[0-2])-(?:0[1-9]|1[0-9]|2[0-8])|(?:0[13-9]|1[0-2])-(?:29|30)|(?:0[13578]|1[02])-31)|(?:[0-9]{2}(?:0[48]|[2468][048]|[13579][26])|(?:0[48]|[2468][048]|[13579][26])00)-02-29)$/;

22.IPv4地址正则

var regx = /^(?:(?: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]?)$/;

23.十六进制颜色正则

var regx = /^#?([a-fA-F0-9]{6}|[a-fA-F0-9]{3})$/;

24.车牌号正则

var regx = /^[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领A-Z]{1}[A-Z]{1}[A-Z0-9]{4}[A-Z0-9挂学警港澳]{1}$/;

25.过滤HTML标签

var str="<p>dasdsa</p>nice <br> test</br>"
var regx = /<[^<>]+>/g;
str = str.replace(regx, '');

26.密码强度正则,最少6位,包括至少1个大写字母,1个小写字母,1个数字,1个特殊字符

var regx = /^.*(?=.{6,})(?=.*\d)(?=.*[A-Z])(?=.*[a-z])(?=.*[!@#$%^&*? ]).*$/;

27.URL正则

var regx = /^((https?|ftp|file):\/\/)?([\da-z\.-]+)\.([a-z\.]{2,6})([\/\w \.-]*)*\/?$/;

28.匹配浮点数

var regx = /^-?([1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0)$/;

猜你喜欢

转载自blog.csdn.net/hrj970808/article/details/109645198