常用正则表达式—邮箱(Email)

常用正则表达式—邮箱(Email)

本文针对有一点正则基础的同学,如果你对正则一无所知,请移步“正则表达式30分钟入门教程”学习。

要验证一个字符串是否为邮箱的话,首先要了解邮箱账号的格式。我尝试过在网上找出一个标准的格式,但是很遗憾我没有找到。我也尝试使用RFC标准来判断邮箱的格式,但是也没有结果。网上些博客说不应该使用RFC标准来验证邮箱是否合法,有兴趣的可以看看“is this email valid?”和“Don’t RFC-Validate Email Addresses”。据了解【参考】,现在用中文命名的邮箱也合法了,比如“杨元庆@联想.中国”。

虽然没有统一的邮箱账号格式,但是所有邮箱都符合“名称@域名”的规律。对于名称和域名的字符限制,我们可以根据项目的情况定义一个,比如只允许有英文、数字、下划线等组成。下面举例实现一些验证邮箱格式的正则表达式。

实例1、只允许英文字母、数字、下划线、英文句号、以及中划线组成

举例:zhangsan-001@gmail.com
分析邮件名称部分:

  • 26个大小写英文字母表示为a-zA-Z
  • 数字表示为0-9
  • 下划线表示为_
  • 中划线表示为-
  • 由于名称是由若干个字母、数字、下划线和中划线组成,所以需要用到+表示多次出现

根据以上条件得出邮件名称表达式:[a-zA-Z0-9_-]+

分析域名部分:

一般域名的规律为“[N级域名][三级域名.]二级域名.顶级域名”,比如“qq.com”、“www.qq.com”、“mp.weixin.qq.com”、“12-34.com.cn”,分析可得域名类似“** .** .**.**”组成。

  • “**”部分可以表示为[a-zA-Z0-9_-]+
  • “.**”部分可以表示为\.[a-zA-Z0-9_-]+
  • 多个“.**”可以表示为(\.[a-zA-Z0-9_-]+)+

综上所述,域名部分可以表示为[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+

最终表达式:
由于邮箱的基本格式为“名称@域名”,需要使用“^”匹配邮箱的开始部分,用“$”匹配邮箱结束部分以保证邮箱前后不能有其他字符,所以最终邮箱的正则表达式为:
^[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+$

实例2、名称允许汉字、字母、数字,域名只允许英文域名

举例:杨元庆001Abc@lenovo.com.cn

分析邮件名称部分:

  • 汉字在正则表示为[\u4e00-\u9fa5]
  • 字母和数字表示为A-Za-z0-9
    通过分析得出邮件名称部分表达式为[A-Za-z0-9\u4e00-\u9fa5]+

分析邮件域名部分

邮件部分可以参考实例1中的分析域名部分
得出域名部分的表达式为[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+

最终表达式:
我们用@符号将邮箱的名称和域名拼接起来,因此完整的邮箱表达式为
^[A-Za-z0-9\u4e00-\u9fa5]+@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+$

http://blog.csdn.net/make164492212/article/details/51656638

https://c.runoob.com/front-end/854

微信 WEUI原生以及使用webuploader插件上传方法

摘要: weui构架下的原生及webuploader插件上传js代码

weui1.0.0

webuploder-0.1.5

不多说,直接看代码

		$(function() {
			// 允许上传的图片类型
			var allowTypes = [ 'image/jpg', 'image/jpeg', 'image/png', 'image/gif' ];
			// 1024KB,也就是 1MB
			var maxSize = 1024 * 1024;
			// 图片最大宽度
			var maxWidth = 300;
			// 最大上传图片数量
			var maxCount = 6;
			$('.js_file').on('change', function(event) {
				var files = event.target.files;
				// 如果没有选中文件,直接返回
				if (files.length === 0) {
					return;
				}
				for (var i = 0, len = files.length; i < len; i++) {
					var file = files[i];
					var reader = new FileReader();
					// 如果类型不在允许的类型范围内
					if (allowTypes.indexOf(file.type) === -1) {
						$.weui.alert({
							text : '该类型不允许上传'
						});
						continue;
					}
 					if (file.size > maxSize) {
 						$.weui.alert({
 							text : '图片太大,不允许上传'
 						});
 						continue;
 					}
 					if ($('.weui_uploader_file').length >= maxCount) {
 						$.weui.alert({
 							text : '最多只能上传' + maxCount + '张图片'
 						});
 						return;
 					}
					reader.onload = function(e) {
						var img = new Image();
						img.onload = function() {
							// 不要超出最大宽度
							var w = Math.min(maxWidth, img.width);
							// 高度按比例计算
							var h = img.height * (w / img.width);
							var canvas = document.createElement('canvas');
							var ctx = canvas.getContext('2d');
							// 设置 canvas 的宽度和高度
							canvas.width = w;
							canvas.height = h;
							ctx.drawImage(img, 0, 0, w, h);
							var base64 = canvas.toDataURL('image/png');

							// 插入到预览区
							var $preview = $('<li class="weui-uploader__file weui-uploader__file_status" style="background-image:url('
									+ base64 + ')"><div class="weui-uploader__file-content">0%</div></li>');

							$('.weui-uploader__files').append($preview);

							// 然后假装在上传,可以post base64格式,也可以构造blob对象上传,也可以用微信JSSDK上传
							var progress = 0;
							function uploading() {
								$preview.find('.weui-uploader__file-content').text(++progress + '%');
								if (progress < 100) {
									setTimeout(uploading, 30);
								} else {
									// 如果是失败,塞一个失败图标
									//$preview.find('.weui-uploader__file-content').html('<i class="weui_icon_warn"></i>');
									$preview.removeClass('weui-uploader__file_status')
											.find('.weui-uploader__file-content')
											.remove();
								}
							}
							setTimeout(uploading, 30);
						};
						img.src = e.target.result;
					};
					reader.readAsDataURL(file);
				}
			});
		});



html

<div class="weui-cells weui-cells_form">
	<form method="post">
		<div class="weui-cells__title">照片</div>
		<div class="weui-cell">
			<div class="weui-cell__bd">
				<div class="weui-uploader__bd">
					<ul class="weui-uploader__files">
						<li class="weui-uploader__file" style="background-image:url(http://imgsize.ph.126.net/?imgurl=http://cms-bucket.nosdn.127.net/ba2d23de68ad4dcc8ed67622f911f14c20170113154227.png_140x88x1x85.jpg)">
						</li>
					</ul>
					<div class="weui-uploader__input-box">
						<input id="uploaderInput" class="weui-uploader__input js_file" type="file" accept="image/*" multiple>
					</div>
				</div>
			</div>
		</div>
		<div class="weui-btn-area"><a href="javascript:;" class="weui-btn weui-btn_primary">保存</a></div>
	</form>
</div>

上面是搜到的原生解决办法,这个基础上可以将base64上传到七牛,详见:

https://support.qiniu.com/question/69078

下面是webuploader插件上传代码,本例上传七牛

var uploader = WebUploader.create({
	auto: true,
	swf: '/statics/webuploader-0.1.5/Uploader.swf',
	server: 'http://upload.qiniu.com/',
	pick: '#imgInput',
	accept: {
		title: 'Images',
		extensions: 'gif,jpg,jpeg,bmp,png',
		mimeTypes: 'image/*'
	},
	method: 'POST',
	formData: {'token':'%token%'}
});
uploader.on('uploadStart',function(file) {
	this.options.formData.key='image/'+new Date().getTime()+'/'+file.name.replace(/,/g, '');
});
uploader.on('fileQueued', function(file) {
	var $preview = $('<li id="'+file.id+'" class="weui-uploader__file weui-uploader__file_status"><div class="weui-uploader__file-content">0%</div></li>');
	$('#imgList').append($preview);
	uploader.makeThumb(file, function( error, src) {
	$('#'+file.id).css('background-image','url('+src+')');
    }, 79, 79 );
});
uploader.on('uploadProgress', function(file, percentage ) {
	$('#'+file.id).find('.weui-uploader__file-content').html(percentage+'%');
});
uploader.on('uploadSuccess', function(file, response) {
	$('#'+file.id).removeClass('weui-uploader__file_status')
	.find('.weui-uploader__file-content')
	.remove();
// 上传成功,想干点什么就在这里干吧
});

html

<div class="weui-cell">
	<div class="weui-cell__bd">
		<div class="weui-uploader__bd">
			<ul class="weui-uploader__files" id="imgList">
				<li id="" class="weui-uploader__file" style="background-image:url()"></li>
			</ul>
			<div class="weui-uploader__input-box">
				<div id="imgInput" class="weui-uploader__input">选择图片</div>
			</div>
		</div>
	</div>
</div>

https://my.oschina.net/illone/blog/826574

使用clipboard.js实现页面内容复制到剪贴板

clipboard.js是一个github上的开源项目,可以实现纯 JavaScript (无 Flash)的浏览器内容复制到系统剪贴板的功能。

1、访问clipboard.js项目主页——https://github.com/zenorocha/clipboard.js

2、下载clipboard.min.js,并在页面中引用

  1. <!– clipboard Script –>
  2.         <script type=“text/javascript” src=“script/clipboard.min.js”></script>

 

3、在script中写实例化语句:

  1. <script type=“text/javascript”>
  2.         $(document).ready(function(){
  3.             var clipboard = new Clipboard(‘.btn’);
  4. }
  5. </script>

4、写页面按钮,实现点击按钮复制指定内容

  1. <button class=“btn” data-clipboard-text=“http://www.hbcloudwide.com/oss/video/7”>点击复制</button>

当然,clipboard.js还可以实现多种复制或剪切效果。具体用法参看github项目主页即可。

 

http://blog.csdn.net/softwave/article/details/50054477

js可以监听浏览器默认按钮的后退事件吗back()

window.history.back() // 上一頁
window.history.go(-2) // 前第二頁
監聽事件
jQuery(document).ready(function($) {

if (window.history && window.history.pushState) {

$(window).on(‘popstate’, function() {
var hashLocation = location.hash;
var hashSplit = hashLocation.split(“#!/”);
var hashName = hashSplit[1];

if (hashName !== ”) {
var hash = window.location.hash;
if (hash === ”) {
alert(‘後退按鈕點擊’);
}
}
});

window.history.pushState(‘forward’, null, ‘./#forward’);
}

});

jquery 回到顶部

<html>
<head>
<title></title>
</head>
<body>
<style type=”text/css”>
.go-top-trigger {
width: 52px;
height: 52px;
cursor: pointer;
z-index: 10;
right: 13px;
bottom: 132px;
position: fixed;
background: url(https://gss0.bdstatic.com/5foIcy0a2gI2n2jgoY3K/n/nvn/static/news/imgs/go-top_b1fff84.png) no-repeat;
background-size: 52px auto;
-webkit-background-size: 52px auto;
background-position: right center;}
</style>
<div class=”go-top-trigger” style=”display:none;” ></div>

</body>
<script type=”text/javascript” src=”http://www.jq22.com/js/jquery.min.js”></script>
<script type=”text/javascript”>
$(function(){
$(window).scroll(function() {
if($(window).scrollTop() >= 300){
$(‘.go-top-trigger’).fadeIn(300);
}else{
$(‘.go-top-trigger’).fadeOut(300);
}
});
$(‘.go-top-trigger’).click(function(){
$(‘html,body’).animate({scrollTop: ‘0px’}, 800);});
});
</script>
<div style=”height:100px;”>55555</div>
<div style=”height:100px;”>55555</div>
<div style=”height:100px;”>55555</div>
<div style=”height:100px;”>55555</div>
<div style=”height:100px;”>55555</div>
<div style=”height:100px;”>55555</div>
<div style=”height:100px;”>55555</div>
<div style=”height:100px;”>55555</div>
<div style=”height:100px;”>55555</div>
<div style=”height:100px;”>55555</div>
<div style=”height:100px;”>55555</div>
<div style=”height:100px;”>55555</div>
<div style=”height:100px;”>55555</div>
<div style=”height:100px;”>55555</div>
<div style=”height:100px;”>55555</div>
<div style=”height:100px;”>55555</div>
<div style=”height:100px;”>55555</div>
<div style=”height:100px;”>55555</div>
<div style=”height:100px;”>55555</div>
<div style=”height:100px;”>55555</div>
<div style=”height:100px;”>55555</div>
<div style=”height:100px;”>55555</div>
<div style=”height:100px;”>55555</div>
<div style=”height:100px;”>55555</div>
</html>

html 实现 消息咨询提示框 微信提示框 微信咨询按钮

需要引用jquery    图标


&lt;style&gt;
#ding {width:100%; max-width:640px; max-height:100px; position:fixed; top:0; z-index:999999; background-color:#000; background:transparent; color:#FFF; background-color:rgba(0,0,0,0.70);}
.wxin { width:10%; height:100%; overflow:hidden; padding-top:8px; padding-bottom:8px; padding-left:8px; padding-right:8px; float:left; border-right-width: 1px; border-right-style: solid; border-right-color: #c7c5c5; }
.wxin img { width:100%; max-height:74px;}
.wenz { width:60%; height:100%; overflow:hidden; float:left; margin-left:8px; padding-top:2%;}
.wenz { color:#FFF; font-size:14px;}
.huifu { width:18%; height:100%; overflow:hidden; float:left; background-color:#3daf35; border-radius:6px; text-align:center; padding-top:4px; padding-bottom:4px; margin-top:15px;}
.huifu span { font-size:14px; color:#FFF;}
&lt;/style&gt;
&lt;div id="ding" style="display:none;"&gt;
&lt;div class="wxin"&gt;&lt;img src="/images/wx1.png"&gt;&lt;/div&gt;
&lt;div class="wenz"&gt;&lt;p&gt;真爱在线医生&lt;br&gt;您好,请问有什么可以帮您?&lt;/p&gt;&lt;/div&gt;
&lt;div class="huifu"&gt;&lt;a href="javascript:void(0)" onClick="openZoosUrl();LR_HideInvite();return false;"&gt;&lt;span&gt;回复&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;script type="text/javascript"&gt;
$(function () {
//绑定滚动条事件
//绑定滚动条事件
$(window).bind("scroll", function () {
var sTop = $(window).scrollTop();
var sTop = parseInt(sTop);
if (sTop &gt;= 10) {
if (!$("#ding").is(":visible")) {
try {
$("#ding").slideDown();
} catch (e) {
$("#ding").show();
}
}
}
else {
if ($("#ding").is(":visible")) {
try {
$("#ding").slideUp();
} catch (e) {
$("#ding").hide();
}
}
}
});
})
&lt;/script&gt;

Jsonp post 解决 跨域方案 Ajax JSONP支持POST?但为何实际上数据还是GET传递

Jsonp post 跨域方案_javascript技巧_脚本之家

百度地图标记功能 JavaScript API


<!doctype html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=no, minimum-scale=1.0, maximum-scale=1.0">
<title>来院路线-武汉真爱妇产医院手机官网</title>
<meta name="Keywords" content=" 来院路线">
<meta name="Description" content=" 武汉真爱妇产医院来院路线,联系电话:027-87189999">
<link rel="stylesheet" type="text/css" href="/skin/default/css/common.css">
<link rel="stylesheet" type="text/css" href="/skin/default/css/map.css">
<script type="text/javascript" src="/skin/default/js/jquery-1.7.1.min.js"></script>
<script src="/skin/default/js/common6.js"></script>
</head>
<body>
<!-- 公用顶部开始 -->
<div id="header">
<div id="topla"></div>
<div class="logo">
<img src="/skin/default/images/logo.jpg" />
<a href="/"><div class="lg1"></div></a>
<a href="tel:027-87189999"><div class="lg2"></div></a>
</div>
</div>

<div class="menu" style="margin-top:0.2%; margin-bottom:0px;">
<ul>
<a href="/s/pinpai"><li class="li1">简介</li></a>
<a href="/s/myt/"><li class="li1">专家</li></a>
<a href="/s/jszt/"><li class="li1">技术</li></a>
<a href="/s/fw/"><li class="li1">服务</li></a>
<a href="/map.html"><li>路线</li></a>
</ul>
</div>
<div class="main" style="width:100%; height:100%; overflow:hidden;">
<script type="text/javascript" src="http://api.map.baidu.com/api?type=quick&ak=BEl8YOpyzhbKAkEc2379YzCC&v=1.0"></script>

<div id="allmap">
</div>
<div class="dw">点击导航</div>

<script type="text/javascript">
// 百度地图API功能
// var map = new BMap.Map("allmap");
// var point = new BMap.Point(114.380739,30.511525);
// map.centerAndZoom(point, 15);
// map.addControl(new BMap.ZoomControl());
// var opts = {
// width : 260, // 信息窗口宽度
// height: 60, // 信息窗口高度
// title : "武汉真爱妇产医院" // 信息窗口标题
// }
// var infoWindow = new BMap.InfoWindow("地址:雄楚大道489号领秀城,导航热线:<a href='tel:027-87189999' style='color:#FFF; font-size:14px;'>027-87189999</a>", opts); // 创建信息窗口对象
// map.openInfoWindow(infoWindow,point); //开启信息窗口

// var marker1 = new BMap.Marker(new BMap.Point(114.380739,30.511525)); // 创建标注
// map.addOverlay(marker1); // 将标注添加到地图中
// marker1.addEventListener("click", function(){
// /*start|end:(必选)
// {name:string,latlng:Lnglat}
// opts:
// mode:导航模式,固定为
// BMAP_MODE_TRANSIT、BMAP_MODE_DRIVING、
// BMAP_MODE_WALKING、BMAP_MODE_NAVIGATION
// 分别表示公交、驾车、步行和导航,(必选)
// region:城市名或县名 当给定region时,认为起点和终点都在同一城市,除非单独给定起点或终点的城市
// origin_region/destination_region:同上
// */
// map.openInfoWindow(infoWindow,point); //开启信息窗口
// });

// $('.dw').click(function(){
// var start = {
// name:""
// }
// var end = {
// name:"武汉真爱妇产医院"
// }
// var opts = {
// mode:BMAP_MODE_DRIVING,
// region:"武汉"
// }
// var ss = new BMap.RouteSearch();
// ss.routeCall(start,end,opts);
// });

// 百度地图API功能
var map = new BMap.Map("allmap");
var point = new BMap.Point(114.380739,30.511525);
map.centerAndZoom(point, 15);
map.addControl(new BMap.ZoomControl());
var opts = {
width : 260, // 信息窗口宽度
height: 60, // 信息窗口高度
title : "武汉真爱妇产医院" // 信息窗口标题
}
var infoWindow = new BMap.InfoWindow("地址:雄楚大道489号领秀城,导航热线:<a href='tel:027-87189999' style='color:#FFF; font-size:14px;'>027-87189999</a>", opts); // 创建信息窗口对象
map.openInfoWindow(infoWindow,point); //开启信息窗口

var marker1 = new BMap.Marker(new BMap.Point(114.380739,30.511525)); // 创建标注
map.addOverlay(marker1); // 将标注添加到地图中
marker1.addEventListener("click", function(){
/*start|end:(必选)
{name:string,latlng:Lnglat}
opts:
mode:导航模式,固定为
BMAP_MODE_TRANSIT、BMAP_MODE_DRIVING、
BMAP_MODE_WALKING、BMAP_MODE_NAVIGATION
分别表示公交、驾车、步行和导航,(必选)
region:城市名或县名 当给定region时,认为起点和终点都在同一城市,除非单独给定起点或终点的城市
origin_region/destination_region:同上
*/
map.openInfoWindow(infoWindow,point); //开启信息窗口
});

$('.dw').click(function(){
var start = {
name:""
}
var end = {
name:"武汉真爱妇产医院"
}
var opts = {
mode:BMAP_MODE_DRIVING,
region:"武汉"
}
var ss = new BMap.RouteSearch();
ss.routeCall(start,end,opts);
});

</script>

</div>
<!--<div class="bottom">
<div class="bottom2">
<a href="tel:027-87189999"><div class="bli1"><img src="/skin/default/images/zx6.png" align="center" /><br/><p>一键通话</p></div></a>
<a href="javascript:void(0)" onClick="openZoosUrl();LR_HideInvite();return false;"><div class="bli3"><img src="/skin/default/images/zx7.png" align="center" /><br/><p>微信咨询</p></div></a>
</div>
<a href="javascript:void(0)" onClick="openZoosUrl();LR_HideInvite();return false;"><div class="bli2"><img src="/skin/default/images/tel.gif" align="center" /><br/><p>专家咨询</p></div></a>
</div>-->

<div class="bottom">
<div class="bottom2"></div>
<a href="javascript:void(0)" onClick="openZoosUrl();LR_HideInvite();return false;"><div class="dzx1"><img src="/skin/default/images/dzx1.png" /><br/>问病情</div></a>
<a href="javascript:void(0)" onClick="openZoosUrl();LR_HideInvite();return false;"><div class="dzx2"><img src="/skin/default/images/dzx2.png" /><br/>问价格</div></a>
<a href="javascript:void(0)" onClick="openZoosUrl();LR_HideInvite();return false;"><div class="dzx3" id="dzx"><img src="/skin/default/images/dzx3.png" /><br/>问医生</div></a>
<a href="tel:027-87189999"><div class="dzx4"><img src="/skin/default/images/dzx4.png" /><br/>一键通话</div></a>
</div>
<script>
var _hmt = _hmt || [];
(function() {
var hm = document.createElement("script");
hm.src = "//hm.baidu.com/hm.js?963850e777355e4b52b2f69b56e96ba0";
var s = document.getElementsByTagName("script")[0];
s.parentNode.insertBefore(hm, s);
})();
</script>
<script type="text/javascript" src="/skin/default/js/swt.js"></script>
</body>
</html>