今天,做了几个编程题目,深感正则表达式的强大。
一、检查字符串中是否包含数字。包含则返回true,否则返回false。
function containsNumber(str) { for (var i = 0; i < str.length; i++) { if (!isNaN(parseInt(str[i]))) { //判断是否为数字 return true; } } return false; }
parseInt(string, radix):将字符串解析为数字。radix为基数。默认是十进制数。
如果字符串的第一个字符不能被转换为数字,会返回 NaN。
isNaN():检查某个值是否是非数字值。如果参数值为 NaN 或字符串、对象、undefined等非数字值则返回 true, 否则返回 false。
使用正则表达式为:
function containsNumber(str) { var reg=/\d/; return reg.test(str); }
二、给定字符串 str,检查其是否包含连续重复的字母(a-zA-Z),包含返回 true,否则返回 false
function containsRepeatingLetter(str) { return /([a-zA-Z])\1/.test(str); }
():代表捕获组,
\1代表对第一个捕获组的引用
三、获取 url 中的参数
1. 指定参数名称,返回该参数的值 或者 空字符串
2. 不指定参数名称,返回全部的参数对象 或者 {}
3. 如果存在多个同名参数,则返回数组**
function getUrlParam(sUrl, sKey) { var arr={}; sUrl.replace(/\??(\w+)=(\w+)$?/g,function (match,p1,p2) { if (!arr[p1]) { arr[p1]=p2; }else{ p=arr[p1]; arr[p1]=[].cancat(p,p2); } }); if(!sKey){ return arr; }else{ for(var ele in arr){ if (ele=sKey) { return arr[ele]; } } return ""; } }
注意:1、repalce函数的第二个参数可以是替换文本,也可以是产生替换文本的函数。函数的参数,match为子捕获 组,p1,p2,...pn为捕获组的各个项。
2、 g代表全局属性。意思是说,找到匹配的值之后,继续回溯查找。
3、 若replace的第二个参数为函数,函数的参数如下
四、驼峰命名的转换
function campCase(str) { var reg=/-([a-z])/g; return str.replace(reg,function (match,p1) { return p1.toUpperCase(); }); }
注意:1.repalce的返回值为替换后的字符串。
2..match为匹配子字串。(包括-)
3.p1为第一个捕获组。