RegExp

1.什麼是RegExp;
正則表達式使用單個字符串來描述、匹配一系列符合某個句法規則的字符串。在不少文本編輯器裏,正則表達式一般被用來檢索、替換那些符合某個模式的文本;
2.初始化RegExp;
var reg = new RegExp(string,pattern);
var reg = /string/pattren;
partren(模式) = > i:不區分大小寫;g:全局模式,匹配到字符串結束;m:多行;
exec => 返回一個數組 若是字符串存在的話;
test => 測試string是否被正則匹配;返回 true : false;
match => 返回包含匹配字符串元素的一個數組;
3.語法;
\w 匹配包括下劃線在內的任意單詞字符相似於;相似於[a-zA-Z_];
\W 匹配非數字;相似於[^a-zA-Z_];
\d 匹配一個數字;相似於[0-9];
\D 匹配一個非數字字符;相似於[^0-9];
\b 匹配一個單詞邊界;
\B 匹配一個非單詞邊界;
\s 匹配任何空白字符;包括空格;製表符;換頁符;
\S 匹配任何一個非空字符;
[] 表示一個範圍;
() 隔離一段代碼;
{n} n是一個非負整數。匹配肯定的n次
{n,m} 匹配n到m次;若是沒有m 表示至少匹配n次;
? 匹配0次或者1次;
?: 表示不捕獲後面的內容
^ 在[]內部表示非;外部表示開頭
$ 表示結尾;
. 匹配除了\n之外的任何字符;
+ 匹配一次或屢次
* 匹配任意次;
| 關係或;兩邊做用範圍: 遇到 ( 和 ) 結束; 沒遇到時, 一直做用到正則表達式開頭和結尾
\ 轉義符;匹配正則表達式的語法或者保留字時須要使用;
(a)\1 1表示對前面的引用;支持先使用引用;可是匹配到的是位置;
(?= ) 後面知足;
(?!= ) 後面不知足;
4.查找數組中第k大的值;
function (arr, k){
return arr.sort(function(a, b){return a -b})[k];
}
5.判斷變量的數據類型;
function type(obj){
return Object.prototype.toString.call(obj).slice(8, -1).toLowerCase();
}
6.實現each函數;
fucntion each(obj, callback){
if(type(obj) == 'object'){
for(var key in obj){
if(false === callback(obj[key], key, obj)){
return ;
}
}
}else{
for(var i = 0 ; i < obj.lengthl; i++){
if(false === callback(obj[i], i, obj)){
return ;
}
}
}
}
7._mixin;
function mixin(base){
var list = Array.prototype.slice.apply(arguments);
var method = typeof list[list - 1] === 'function'? list.pop(): function(key, base, obj){base[key] = obj[kye]};
for(var i = 1, l = list.length; i < l ; i++){
for(var key in list[i]){
method(key, base, list[i]);
}
}
return base;
}
8._bind;
function bind(method, context){
return function(){
return method.apply(context,arguments);
}
}
9.once();
function once(method){
var run = false,ret;
return function(){
if(!run){
run = true;
ret = method();
}
return ret;
}
}
10 _.throttle/_.debounce
function throttle(func, wait){
var last = 0;
return function(){
var date = +new Date();
if(date - last > wait){
last = date;
func();
}
}
}
function throttleEX(func, wait, config){
var last = 0, timeout , later = function(){
timeout = null;
last = +new Date();
func();
};
return function(){
var now = + new Date();
var remaining = wait - (now - last);
if(remaining < 0){
if(timeout){
clearTimeout( timeout );
timeout = null;
}
last = now ;
func():
}else if(!timeout && config.trailing){
timeout = setTimeout(later, remaining);
}
}
}正則表達式

相關文章
相關標籤/搜索