一些常用的HTML5模式(pattern) 总结


Posted in HTML / CSS onJuly 14, 2015

最近在做手机页面时,遇到数字输入的键盘的问题,之前的做法只是一刀切的使用 type="tel",不过一直觉得九宫格的电话号码键盘上的英文字母太碍事了。于是想要尝试其它的实现方案,最终的结论却令人沮丧。不过也趁机详细了解了下pattern这个属性。
type="tel" 和 type="number" 的区别

这里还是先那么先交代一下最初遇到的问题。其实无论是tel还是number都不是完美的:
type="tel"

    优点是iOS和Android的键盘表现都差不多
    缺点是那些字母好多余,虽然我没有强迫症但还是感觉怪怪的啊。
一些常用的HTML5模式(pattern) 总结

type="number"

    优点是Android下实现的一个真正的数字键盘
    缺点一:iOS下不是九宫格键盘,输入不方便
    缺点二:旧版Android(包括微信所用的X5内核)在输入框后面会有超级鸡肋的小尾巴,好在Android 4.4.4以后给去掉了。
一些常用的HTML5模式(pattern) 总结

一些常用的HTML5模式(pattern) 总结

不过对于缺点二,我们可以用webkit私有的伪元素给fix掉:

XML/HTML Code复制内容到剪贴板
  1. input[type=number]::-webkit-inner-spin-button,     
  2.     input[type=number]::-webkit-outer-spin-button {    
  3.         -webkit-appearance: none;    
  4.         appearance: none;    
  5.         margin: 0;    
  6.     }  

pattern属性

pattern用于验证表单输入的内容,通常HTML5的type属性,比如email、tel、number、data类、url等,已经自带了简单的数据格式验证功能了,加上pattern后,前端部分的验证更加简单高效了。

显而易见,pattern的属性值要用正则表达式。
实例
简单的数字验证

数字的验证有两个:

XML/HTML Code复制内容到剪贴板
  1. <input type="number" pattern="\d">     
  2. <input type="number" pattern="[0-9]*">    

一些常用的HTML5模式(pattern) 总结

对表单验证来说,这两个正则的作用是一样的,表现的话差异就很大:

    iOS中,只有[0-9]\*才可以调起九宫格数字键盘,\d 无效
    Android 4.4以下(包括X5内核),两者都调起数字键盘;
    Android 4.4.4以上,只认 type 属性,也就是说,如果上面的代码将 type="number" 改为 type="text" ,将调起全键盘而不会是九宫格数字键盘。

常用的正则表达式

pattern的用法都一样,这里不再??赂髦窒晗感捶?耍?皇橇谐隼匆恍┏S玫恼?蚓秃昧耍?/p>

    信用卡 [0-9]{13,16}
    银联卡 ^62[0-5]\d{13,16}$
    Visa: ^4[0-9]{12}(?:[0-9]{3})?$
    万事达:^5[1-5][0-9]{14}$
    QQ号码: [1-9][0-9]{4,14}
    手机号码:^(13[0-9]|14[5|7]|15[0|1|2|3|5|6|7|8|9]|18[0|1|2|3|5|6|7|8|9])\d{8}$
    身份证:^([0-9]){7,18}(x|X)?$
    密码:^[a-zA-Z]\w{5,17}$ 字母开头,长度在6~18之间,只能包含字母、数字和下划线
    强密码:^(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{8,10}$ 包含大小写字母和数字的组合,不能使用特殊字符,长度在8-10之间
    7个汉字或14个字符:^[\u4e00-\u9fa5]{1,7}$|^[\dA-Za-z_]{1,14}$

浏览器支持

很不幸,pattern的浏览器支持很惨:
一些常用的HTML5模式(pattern) 总结

但是如果只是如文章开头提到的改数字键盘的话,iOS和Android都是没有问题的。

HTML / CSS 相关文章推荐
CSS3教程(5):网页背景图片
Apr 02 HTML / CSS
用CSS3将你的设计带入下个高度
Aug 08 HTML / CSS
实例讲解CSS3中的box-flex弹性盒属性布局
Jun 09 HTML / CSS
CSS3实现缺角矩形,折角矩形以及缺角边框
Dec 20 HTML / CSS
html5 localStorage本地存储_动力节点Java学院整理
Jul 06 HTML / CSS
基于 HTML5 WebGL 实现的医疗物流系统
Oct 08 HTML / CSS
HTML5实现移动端点击翻牌功能
Oct 23 HTML / CSS
奇妙的 CSS shapes(CSS图形)
Apr 05 HTML / CSS
CSS3 天气图标动画效果
Apr 06 HTML / CSS
关于CSS自定义属性与前端页面的主题切换问题
Mar 21 HTML / CSS
微信小程序纯CSS实现无限弹幕滚动效果
Sep 23 HTML / CSS
CSS实现鼠标悬浮动画特效
May 07 HTML / CSS
针对HTML5的Web Worker使用攻略
Jul 12 #HTML / CSS
极简的HTML5模版
Jul 09 #HTML / CSS
深入探究HTML5的History API
Jul 09 #HTML / CSS
HTML5中Localstorage的使用教程
Jul 09 #HTML / CSS
HTML5到底会有什么发展?HTML5的前景展望
Jul 07 #HTML / CSS
HTML5新增的8类INPUT输入类型介绍
Jul 06 #HTML / CSS
用HTML5实现鼠标滚轮事件放大缩小图片的功能
Jun 25 #HTML / CSS
You might like
PHP用户管理中常用接口调用实例及解析(含源码)
2017/03/09 PHP
innerhtml用法 innertext用法 以及innerHTML与innertext的区别
2009/10/26 Javascript
javascript下对于事件、事件流、事件触发的顺序随便说说
2010/07/17 Javascript
通过Javascript将数据导出到外部Excel文档的函数代码
2012/06/15 Javascript
仿淘宝TAB切换搜索框搜索切换的相关内容
2014/09/21 Javascript
JavaScript中的Math.atan2()方法使用详解
2015/06/15 Javascript
javascript 闭包详解
2015/07/02 Javascript
百度地图API之本地搜索与范围搜索
2015/07/30 Javascript
Bootstrap 布局组件(全)
2016/07/18 Javascript
Web前端框架Angular4.0.0 正式版发布
2017/03/28 Javascript
vue中的模态对话框组件实现过程
2018/05/01 Javascript
vue  elementUI 表单嵌套验证的实例代码
2019/11/06 Javascript
让IDE识别webpack的别名alias的实现方法
2020/05/06 Javascript
JavaScript数组排序功能简单实现
2020/05/14 Javascript
layui使用及简单的三级联动实现教程
2020/12/01 Javascript
[01:51]2014DOTA2西雅图邀请赛 MVP 外卡赛black场间采访
2014/07/09 DOTA
python 根据pid杀死相应进程的方法
2017/01/16 Python
python3中bytes和string之间的互相转换
2017/02/09 Python
利用python解决mysql视图导入导出依赖的问题
2017/12/17 Python
python操作mysql代码总结
2018/06/01 Python
python批量获取html内body内容的实例
2019/01/02 Python
Python对Excel按列值筛选并拆分表格到多个文件的代码
2019/11/05 Python
Python实现栈和队列的简单操作方法示例
2019/11/29 Python
python之MSE、MAE、RMSE的使用
2020/02/24 Python
Python通过4种方式实现进程数据通信
2020/03/12 Python
使用python实现飞机大战游戏
2020/03/23 Python
python实现批量修改文件名
2020/03/23 Python
Python3标准库之dbm UNIX键-值数据库问题
2020/03/24 Python
Python requests接口测试实现代码
2020/09/08 Python
python海龟绘图之画国旗实例代码
2020/11/11 Python
H5 canvas中width、height和style的宽高区别详解
2018/11/02 HTML / CSS
数控技术专业推荐信
2013/11/01 职场文书
初入社会应届生求职信
2013/11/18 职场文书
《晚上的太阳》教学反思
2014/04/23 职场文书
早上好问候语大全
2015/11/10 职场文书
el-form每行显示两列底部按钮居中效果的实现
2022/08/05 HTML / CSS