视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
面试中会遇到的正则题
2020-11-27 19:56:55 责编:小采
文档

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,检查其是否符合如下格式

  1. XXX-XXX-XXXX

  2. 其中X为Number类型

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

5、判断是否符合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);
}

6、JS实现千位分隔符

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

7、获取 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 '';
 }
}

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="<p>dasdsa</p>nice <br> test</br>"
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、<OPTION value="待处理">待处理</OPTION>

写一个正则表达式,匹配 "<OPTION value="待处理">"

var str = '<OPTION value="待处理">待处理</OPTION>';
var regx = /^<.*?>/;
var resiult = regx.exec(str)[0];

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

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

相关推荐:

五道典型的javascript面试题

下载本文
显示全文
专题