今天,做了幾個編程題目,深感正則表達式的強大。
一、檢查字符串中是否包含數字。包含則返回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爲第一個捕獲組。