最近在学习JavaScript正则表达式,在这里跟大家分享一下个人写的一些正则表达式(每个人的写法不一样,仅供参考,如有不足请大家多指教)
验证输入零和非零开头的数字 /^(0?|([1-9]\d+))(\.\d{1,2})?$/
验证输入由26个英文字母组成的字符串 /^[a-z]*[A-Z]*$/
验证验证身份证号(15位或18位数字) /^(\d{15,18})$|^(\d{17}x)$/i
验证月份,格式01-31
//月份1 3 5 7 8 10 12 天数范围为01-31
//表达式 ((0?[13578]|1[02]))\-((0?[1-9])|((1|2)[0-9])|30|31)
//月份4 6 9 11 天数范围 01-30
//表达式应为 (0?[469]|[11])\-((0?[1-9])|((1|2)[0-9])|30)
//月份2 平年28
//表达式 02-(0?[1-9]|[1][0-9]|[2][0-8])
目前只做了验证平年的,有待提高
表达式为 /^((((0?[13578]|1[02]))\-((0?[1-9])|((1|2)[0-9])|30|31))|((0?[469]|[11])\-((0?[1-9])|((1|2)[0-9])|30))|(02-(0?[1-9]|[1][0-9]|[2][0-8])))$/
验证手机号码验证前两位(注:现在有13、14、15、17、18开头的) /^(1[34578])(\d{9})$/
验证邮箱(简单版本) /^([1-9][0-9]{6,10})(@)([a-z]{2,10})(.)((com)|(cn))$/
验证匹配url /^(http|https|ftp):\/\/([w]{3})(.)([a-z]+)(.)(com|cn|net)$/
验证匹配整数,例如:12,-12,+12 /^([1-9]\d*)|(-[1-9]\d*)|(\+[1-9]\d*)$/
验证判断输入是否是qq号码 (PS:qq总长度是6位以上,首位不能为0) /^([1-9][0-9]{6,10})$/
小练习三道校招题:
1.给定这样一个连字符串,vars1 = "dgfhfgh254bhku289fgdhdy675gfh";
写一个function提取上述字符串中的字符最终输出:[254,289,675](2016美团校招)
2. 给定这样一个连字符串,vars2 = "get-element-by-id";
写一个function转换为驼峰命名法形式的字符串输出:getElementById(2017 美团校招)
toUpperCase()转成大写
3.写一段简单的正则表达式,匹配并取出字符串”https://www.baidu.com/s?cl=3”中的域名部分(https://www.baidu.com)(17百度校招)
答案:
1.
<body>
<h4>判断给定字符串</h4>
<p>var s1 = "dgfhfgh254bhku289fgdhdy675gfh";</p>
<p>写一个function提取上述字符串中的字符最终输出:[254,289,675]</p>
<p id="txt"></p>
<script>
var oP = document.getElementById("txt");
var s1 = "dgfhfgh254bhku289fgdhdy675gfh";
fn(s1);
function fn(msg){
var pattern = /\d+/g ;
var str = '';
var arr = [];
//输出:[254,289,675]
str = msg.match(pattern);
arr.push(str);
oP.innerHTML = arr;
}
</script>
</body>
2.
<body>
<p>给定这样一个连字符串,var s2 = "get-element-by-id";</p>
<p>写一个function转换为驼峰命名法形式的字符串输出:getElementById</p>
<p>toUpperCase()转成大写</p>
<h4 id="txt"></h4>
<script>
var oTxt = document.getElementById("txt");
var s2 = "get-element-by-id";
fn(s2)
function fn(msg) {
var str = msg.split('-');
var len = str.length;
// console.log(len)
for (var i = 0 ; i<len ; i++){
str[i] = str[i].charAt(0).toUpperCase()+str[i].substr(1,str[i].length-1);
}
var str1 = str.join('')
//console.log(str1)
oTxt.innerHTML = str1;
}
</script>
</body>
3.
<body>
<p>写一段简单的正则表达式</p>
<p>匹配并取出字符串”https://www.baidu.com/s?cl=3”中的域名部分(https://www.baidu.com)</p>
<h4 id="txt"></h4>
<script>
var oTxt = document.getElementById("txt");
var str="https://www.baidu.com/s?cl=3";
var pattern=/https:\/\/([A-Za-z\.]+)\/\S+/;
var result=pattern.exec(str);
if(result){
oTxt.innerHTML = result[1];
}
</script>
</body>
还在学,持续更新中.......