资讯专栏INFORMATION COLUMN

面试中会遇到的正则题

Nekron / 992人阅读

摘要:说到底还是练习的不够多,一直处于只看不做的程度上。所以搜集了这些正则习题,来保证温故而知新。本文不讲基础,只记录习题,如果后续有新的题目,也会保持更新。

正则表达式,有木有人像我一样,学了不知道多少遍,学的时候看起来都懂了,过一段时间就又忘的差不多了,等真正要用到的时候,还是一脸懵逼。说到底还是练习的不够多,一直处于只看不做的程度上。所以搜集了这些正则习题,来保证温故而知新。建议读者看完题目后可以自己先做一做,然后再看实现方法。本文不讲基础,只记录习题,如果后续有新的题目,也会保持更新。

1、var s1 = "get-element-by-id"; 给定这样一个连字符串,写一个function转换为驼峰命名法形式的字符串 getElementById

var f = function(s) {
    return s.replace(/-w/g, function(x) {
        return x.slice(1).toUpperCase();
    })
}

2、判断字符串是否包含数字

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

3、判断电话号码

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

4、判断是否符合指定格式

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

XXX-XXX-XXXX

其中X为Number类型

function matchesPattern(str) {
    return /^(d{3}-){2}d{4}&/.test(str);
}

5、判断是否符合USD格式

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

以 $ 开始

整数部分,从个位起,满 3 个数字用 , 分隔

如果为小数,则小数部分长度为 2

正确的格式如:$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);
}

6、JS实现千位分隔符

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

7、获取 url 参数

获取 url 中的参数

指定参数名称,返回该参数的值 或者 空字符串

不指定参数名称,返回全部的参数对象 或者 {}

如果存在多个同名参数,则返回数组

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 "";
    }
}

8、验证邮箱

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

9、验证身份证号码

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

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

10、匹配汉字

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

11、去除首尾的"/"

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

12、判断日期格式是否符合 "2017-05-11"的形式,简单判断,只判断格式

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

13、判断日期格式是否符合 "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)$/;

14、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]?)$/;

15、十六进制颜色正则

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

16、车牌号正则

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

17、过滤HTML标签

var str="

dasdsa

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

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

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

19、URL正则

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

20、匹配浮点数

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

21、

写一个正则表达式,匹配 "

var str = "";
var regx = /^<.*?>/;
var resiult = regx.exec(str)[0];

最后推荐一个练习正则的网站 regulex%7B2%7D%5Cd%7B4%7D%26),可以查看正则匹配的走向

如果喜欢请关注我的Github,给个Star吧,我会定期分享一些JS中的知识,^_^

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/93933.html

相关文章

  • Python 爬虫面试 170 道:2019 版

    摘要:下面代码会存在什么问题,如何改进一行代码输出之间的所有偶数。简述进程之间如何通信多路复用的作用模型的区别什么是并发和并行解释什么是异步非阻塞的作用面试题说说你知道的命令如何查看某次提交修改的内容答案扫码下面的二维码订阅即可获取。 引言 最近在刷面试题,所以需要看大量的 Python 相关的面试题,从大量的题目中总结了很多的知识,同时也对一些题目进行拓展了,但是在看了网上的大部分面试题不...

    trigkit4 评论0 收藏0
  • 深入理解js

    摘要:详解十大常用设计模式力荐深度好文深入理解大设计模式收集各种疑难杂症的问题集锦关于,工作和学习过程中遇到过许多问题,也解答过许多别人的问题。介绍了的内存管理。 延迟加载 (Lazyload) 三种实现方式 延迟加载也称为惰性加载,即在长网页中延迟加载图像。用户滚动到它们之前,视口外的图像不会加载。本文详细介绍了三种延迟加载的实现方式。 详解 Javascript十大常用设计模式 力荐~ ...

    caikeal 评论0 收藏0
  • JavaScript系列(四) - 收藏集 - 掘金

    摘要:函数式编程前端掘金引言面向对象编程一直以来都是中的主导范式。函数式编程是一种强调减少对程序外部状态产生改变的方式。 JavaScript 函数式编程 - 前端 - 掘金引言 面向对象编程一直以来都是JavaScript中的主导范式。JavaScript作为一门多范式编程语言,然而,近几年,函数式编程越来越多得受到开发者的青睐。函数式编程是一种强调减少对程序外部状态产生改变的方式。因此,...

    cfanr 评论0 收藏0
  • 【周刊-3】三年大厂面试官-十道前端面试(欢迎挑战)

    摘要:前言在两家大厂工作了年,当了年的前端面试官,把一些较难的面试题与答案汇总在我的中。请说出至少种方法,越难越好难度阿里腾讯这种题有简单方法,也有难的方法,我建议大伙在面试的时候,尽量往难的说。 前言 在两家大厂工作了6年,当了3年的前端面试官,把一些较难的面试题与答案汇总在我的Github中。希望对大家有所帮助,助力大家进入自己理想的企业。 项目地址是:https://github.co...

    yy13818512006 评论0 收藏0
  • 【周刊-3】三年大厂面试官-十道前端面试(欢迎挑战)

    摘要:前言在两家大厂工作了年,当了年的前端面试官,把一些较难的面试题与答案汇总在我的中。请说出至少种方法,越难越好难度阿里腾讯这种题有简单方法,也有难的方法,我建议大伙在面试的时候,尽量往难的说。 前言 在两家大厂工作了6年,当了3年的前端面试官,把一些较难的面试题与答案汇总在我的Github中。希望对大家有所帮助,助力大家进入自己理想的企业。 项目地址是:https://github.co...

    hiyayiji 评论0 收藏0

发表评论

0条评论

Nekron

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<