王新阳

wangxinyang

几个常用的正则表达式

验证IP地址:

Function CheckIP(ip)
Dim re
Set re = New RegExp
re.Pattern = "^(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9])\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0)\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0)\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[0-9])$"
CheckIP = re.test(ip)
End Function

匹配URL:不支持t.cn这样一个字符的域名

^http:\/\/([a-z0-9]+\-*[a-z0-9]+\.)*[a-z0-9]+\-*[a-z0-9]+\.[a-z]{2,}\/.*/i

/^\s*$/ 匹配空行。

/<\s*(\S+)(\s[^>]*)?>[\s\S]*<\s*\/\1\s*>/ 匹配 HTML 标记。

匹配中文

PHP匹配中文 /^[\x{4e00}-\x{9fa5}]{1}$/u

普遍使用的正则是[\u4e00-\u9fa5],但这个范围并不完整。例如:
/[\u4e00-\u9fa5]/.test( '?' ) // 测试部首?,返回false
根据Unicode 5.0版编码,要准确的判断一个中文字符要包括:
范围 含义 范围 含义
2E80-2EFF CJK 部首补充 2F00-2FDF 康熙字典部首
3000-303F CJK 符号和标点 31C0-31EF CJK 笔画
3200-32FF 封闭式 CJK 文字和月份 3300-33FF CJK 兼容
3400-4DBF CJK 统一表意符号扩展 A 4DC0-4DFF 易经六十四卦符号
4E00-9FBF CJK 统一表意符号 F900-FAFF CJK 兼容象形文字
FE30-FE4F CJK 兼容形式 FF00-FFEF 全角ASCII、全角标点
因此,正确的匹配中文字符正则表达式为:
var rcjk = /[\u2E80-\u2EFF\u2F00-\u2FDF\u3000-\u303F\u31C0-\u31EF\u3200-\u32FF\u3300-\u33FF\u3400-\u4DBF\u4DC0-\u4DFF\u4E00-\u9FBF\uF900-\uFAFF\uFE30-\uFE4F\uFF00-\uFFEF]+/g;
如果不希望匹配标点、符号,在正则中去掉对应的范围即可:
3000-303F CJK 符号和标点 FF00-FFEF 全角ASCII、全角标点

匹配双字节字符,通常可以用这个来代替匹配中文、获取字符串长度
[^\x00-\xff]
"abc".replace( /[^\x00-\xff]/g,"aa" ).length
"中文".replace( /[^\x00-\xff]/g,"aa" ).length

过滤html

function filterHTML($s){
    $search = array ("'<script[^>]*?>.*?</script>'si", // 去掉 javascript
        "'<[\/\!]*?[^<>]*?>'si", // 去掉 HTML 标记
        "'([\r\n])[\s]+'", // 去掉空白字符
        "'&(quot|#34);'i", // 替换 HTML 实体
        "'&(amp|#38);'i",
        "'&(lt|#60);'i",
        "'&(gt|#62);'i",
        "'&(nbsp|#160);'i"
    );
    $replace = array ("","","\\1","\"","&","<",">"," ");
    return preg_replace($search, $replace, $s);
}

通过ajax获取json时要过滤的特殊字符

\ufeff
\u2028
\u2029
\xa0(这个也可以替换为空格)

JS仿PHP shuffle、range、in_array

Array.prototype.shuffle = function() {
	for(var j, x, i = this.length; i; j = parseInt(Math.random() * i), x = this[--i], this[i] = this[j], this[j] = x);
	return this;
};

function range(startNum, endNum, stepNum){
	for(var arr=[], i=startNum; i<=endNum; arr.push(i), i+=(stepNum ? stepNum : 1));
	return arr;
}

function in_array(obj, arr){
	for(var i in arr){
		if(arr[i]===obj)return true;
	}
	return false;
}

在JavaScript 1.6中in_array有对应的原生函数arr.indexOf(search)
注:IE浏览器暂不支持 JavaScript 1.6

JS运算符优先级

下表按从最高到最低的优先级列出JavaScript运算符。具有相同优先级的运算符按从左至右的顺序求值。

运算符描述
. [] ()字段访问、数组下标、函数调用以及表达式分组
++ -- - ~ ! delete new typeof void一元运算符、返回数据类型、对象创建、未定义值
* / %乘法、除法、取模
+ - +加法、减法、字符串连接
<< >> >>>移位
< <= > >= instanceof小于、小于等于、大于、大于等于、instanceof
== != === !==等于、不等于、严格相等、非严格相等
&按位与
^按位异或
|按位或
&&逻辑与
||逻辑或
?:条件
= oP=赋值、运算赋值
,多重求值

jquery background animate

$("div").animate({
backgroundPositionX: "-120px",
backgroundPositionY: "0px"
})

jquery操作select

判断select的选中情况
$('select').find('option:selected').index()
$('select').find('option:selected').prop('value')
$('select').find('option:first').text()

设置值是abc的option为选中状态
$('select').val('abc');
$("select option[value='abc']").prop('selected', 'selected');

删除元素
$('select > option').remove()
$('select > option:gt(0)').remove()
$('select').empty()

CSS3切换效果

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<style>
html,  body, #wrapper{height:100%;width:100%;overflow:hidden;margin:0;padding:0;background:#eee}
#wrapper #content{width:100%;height:100%;background:#fff}
#wrapper #content{
-moz-transition:all 1.2s cubic-bezier(0.23, 1, 0.32, 1);
-webkit-transition: all 1.2s cubic-bezier(0.23, 1, 0.32, 1);
transition:all 1.2s cubic-bezier(0.23, 1, 0.32, 1);
}
#wrapper.on #content{
-webkit-transform:scale(.7,.7);
-moz-transform:scale(.7,.7);
transform:scale(.7,.7);backgound:#
 }
#open{
position:absolute; top:0; left:0; visibility:hidden;
-webkit-transform:translateY(100%) scale(.5,.5);
-moz-transform:translateY(100%) scale(.5,.5);
-ms-transform:translateY(100%) scale(.5,.5);
transform:translateY(100%) scale(.5,.5);
-moz-transition:all 1.6s cubic-bezier(0.23, 1, 0.32, 1);
-webkit-transition: all 1.6s cubic-bezier(0.23, 1, 0.32, 1);
transition:all 1.6s cubic-bezier(0.23, 1, 0.32, 1);
background:#fff;width:100%;height:100%;z-index:1100
 }
#open.on{ visibility:visible;
-webkit-transform:translateY(0%) scale(.5,.5);
-moz-transform:translateY(0%) scale(.5,.5);
-ms-transform:translateY(0%) scale(.5,.5);
transform:translateY(0%) scale(.5,.5);
-moz-transition:all .5s cubic-bezier(0.23, 1, 0.32, 1);
-webkit-transition: all .5s cubic-bezier(0.23, 1, 0.32, 1);
transition:all .5s cubic-bezier(0.23, 1, 0.32, 1);
 }
#open.s{
-moz-transition:all 1.2s cubic-bezier(0.23, 1, 0.32, 1);
-webkit-transition: all 1.2s cubic-bezier(0.23, 1, 0.32, 1);
transition:all 1.2s cubic-bezier(0.23, 1, 0.32, 1);
-webkit-transform:translateY(0%) scale(1,1);
-moz-transform:translateY(0%) scale(1,1);
-ms-transform:translateY(0%) scale(1,1);
transform:translateY(0%) scale(1,1);
}
#open a.close{position:absolute;top:10px;right:10px;border:solid 1px #eee;width:20px;height:20px;text-align:center;line-height:20px}
#mask{ width:100%; height:100%; position:fixed; top:0; left:0; background:rgba(0,0,0,.4); visibility:hidden; opacity:0; }
#mask.on{visibility:visible;opacity:1;}
</style>
<script src="http://libs.baidu.com/jquery/1.10.0/jquery.min.js"></script>
</head>
<body>
<div id="wrapper">
<div id="content"><a href="http://www.baidu.com/">新闻标题</a></div>
</div>
<div id="open">新闻内容<a href="#" class="close">X</a></div>
<div id="mask"></div>
<script>
$('#content a').click(function(){
$('#open,#wrapper,#mask').addClass('on');
setTimeout(function(){$('#open').addClass('s');},500);
return false;
})
$('#open a.close').click(function(){
$('#open').removeClass('s');
setTimeout(function(){$('#open,#wrapper,#mask').removeClass('on')},500);
return false;
})
</script>
</body>
</html>

jquery.pjax.js

原理 html5 api:
history.state
history.pushState
history.replaceState

纳什均衡 博弈论

window.location

Location 对象属性

属性描述
hash设置或返回从井号 (#) 开始的 URL(锚)。
host设置或返回主机名和当前 URL 的端口号。
hostname设置或返回当前 URL 的主机名。
href设置或返回完整的 URL。
pathname设置或返回当前 URL 的路径部分。
port设置或返回当前 URL 的端口号。
protocol设置或返回当前 URL 的协议。
search设置或返回从问号 (?) 开始的 URL(查询部分)。

Location 对象方法

属性描述
assign()加载新的文档。
reload()重新加载当前文档。
replace()用新的文档替换当前文档。
2024-05-17 星期五 农历四月初十