一些常用的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之背景尺寸Background-size使用介绍
Oct 14 HTML / CSS
可以随进度显示不同颜色的css3进度条分享
Apr 11 HTML / CSS
CSS3模拟IOS滑动开关效果
Sep 28 HTML / CSS
html5弹跳球示例代码
Jul 23 HTML / CSS
Application Cache未缓存文件无法访问无法加载问题
May 31 HTML / CSS
使用 HTML5 Canvas 制作水波纹效果点击图片就会触发
Sep 15 HTML / CSS
用HTML5 实现橡皮擦的涂抹效果的教程
May 11 HTML / CSS
使用HTML5 Canvas绘制圆角矩形及相关的一些应用举例
Mar 22 HTML / CSS
使用phonegap获取设备的一些信息方法
Mar 31 HTML / CSS
html5+css如何实现中间大两头小的轮播效果
Dec 06 HTML / CSS
清除canvas画布内容(点擦除+线擦除)
Aug 12 HTML / CSS
纯html+css实现Element loading效果
Aug 02 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中截取中文字符串的代码小结
2011/07/17 PHP
orm获取关联表里的属性值
2016/04/17 PHP
Ubuntu 16.04下安装PHP 7过程详解
2017/03/28 PHP
Laravel 5.4重新登录实现跳转到登录前页面的原理和方法
2017/07/13 PHP
浅析php如何实现爬取数据原理
2018/09/27 PHP
用javascript实现点击链接弹出&quot;图片另存为&quot;而不是直接打开
2007/08/15 Javascript
WEB高性能开发之疯狂的HTML压缩
2010/06/19 Javascript
js自动下载文件到本地的实现代码
2013/04/28 Javascript
js实现无需数据库的县级以上联动行政区域下拉控件
2013/08/14 Javascript
Angular的$http与$location
2016/12/26 Javascript
AngularJS表单提交实例详解
2017/02/18 Javascript
BootStrap表单验证 FormValidation 调整反馈图标位置的实例代码
2017/05/17 Javascript
vue如何获取点击事件源的方法
2017/08/10 Javascript
基于redis的小程序登录实现方法流程分析
2020/05/25 Javascript
[01:36]DOTA2完美大师赛趣味视频之与队友相处的十万个技巧
2017/11/19 DOTA
python连接oracle数据库实例
2014/10/17 Python
Python实现感知机(PLA)算法
2017/12/20 Python
Python+selenium实现截图图片并保存截取的图片
2018/01/05 Python
基于python3实现socket文件传输和校验
2018/07/28 Python
Python3 单行多行万能正则匹配方法
2019/01/07 Python
wxPython实现带颜色的进度条
2019/11/19 Python
在PyCharm中遇到pip安装 失败问题及解决方案(pip失效时的解决方案)
2020/03/10 Python
python 如何引入协程和原理分析
2020/11/30 Python
Python爬虫之Selenium库的使用方法
2021/01/03 Python
详解HTML5 canvas绘图基本使用方法
2018/01/29 HTML / CSS
西班牙汉普顿小姐:购买帆布鞋和太阳镜
2016/10/23 全球购物
LINUX下线程,GDI类的解释
2016/12/14 面试题
英语自荐信常用语句
2013/12/13 职场文书
国际贸易专业个人求职信范文分享
2013/12/14 职场文书
军训自我鉴定
2013/12/14 职场文书
服装设计专业毕业生求职信
2014/04/09 职场文书
董事长新年致辞
2015/07/29 职场文书
班主任经验交流心得体会
2015/11/02 职场文书
Python 循环读取数据内存不足的解决方案
2021/05/25 Python
浅谈mysql哪些情况会导致索引失效
2021/11/20 MySQL
Win11安全功能升级:内置防网络钓鱼功能
2022/04/08 数码科技