正则表达式,有木有人像我一样,学了不知道若干遍,学的时刻看起来都懂了,过一段时间就又忘的差不多了,等真正要用到的时刻,照样一脸懵逼。说到底照样演习的不够多,一向处于只看不做的程度上。所以搜集了这些正则习题,来保证温故而知新。发起读者看完问题后能够本身先做一做,然后再看完成要领。本文不讲基本,只纪录习题,假如后续有新的问题,也会坚持更新。
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="<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),能够检察正则婚配的走向