Linux系统编程(18)——正则表达式实用举例
匹配特定字符串:
只能输入长度为3的字符:"^.{3}$"。
只能输入由26个英文字母组成的字符串:"^[A-Za-z]+$"。
只能输入由26个大写英文字母组成的字符串:"^[A-Z]+$"。
只能输入由26个小写英文字母组成的字符串:"^[a-z]+$"。
只能输入由数字和26个英文字母组成的字符串:"^[A-Za-z0-9]+$"。
只能输入由数字、26个英文字母或者下划线组成的字符串:"^\w+$"。
正则表达式匹配身份证号码
身份证为15位或者18位,15位的全为数字,18位的前17位为数字,最后一位为数字或者大写字母”X“。
与之匹配的正则表达式:(^\d{15}$)|(^\d{17}([0-9]|X)$)
正则表达式匹配电子邮箱或者电子邮件地址
正则匹配表达式:/^[a-z]([a-z0-9]*[-_]?[a-z0-9]+)*@([a-z0-9]*[-_]?[a-z0-9]+)+[\.][a-z]{2,3}([\.][a-z]{2})?$/i
国际域名格式如下:域名由各国文字的特定字符集、英文字母、数字及“-”(即连字符或减号)任意组合而成, 但开头及结尾均不能含有“-”,“-”不能连续出现。 域名中字母不分大小写。域名最长可达60个字节(包括后缀.com、.net、.org等)。
说明:
①/内容/i 构成一个不区分大小写的正则表达式;^ 匹配开始;$ 匹配结束。
②[a-z] E-Mail前缀必需是一个英文字母开头
③([a-z0-9]*[-_]?[a-z0-9]+)* 和_a_2、aaa11、_1_a_2匹配,和a1_、aaff_33a_、a__aa不匹配,如果是空字符,也是匹配的,*表示0个或者多个。
④*表示0个或多个前面的字符.
⑤[a-z0-9]* 匹配0个或多个英文字母或者数字;[-_]? 匹配0个或1“-”,因为“-”不能连续出现。
⑥[a-z0-9]+ 匹配1个或多个英文字母或者数字,因为“-”不能做为结尾
⑦@ 必需有个有@
⑧([a-z0-9]*[-_]?[a-z0-9]+)+ 见上面([a-z0-9]*[-_]?[a-z0-9]+)*解释,但是不能为空,+表示一个或者为多个。
⑨[\.] 将特殊字符(.)当成普通字符;[a-z]{2,3} 匹配2个至3个英文字母,一般为com或者net等。
⑩([\.][a-z]{2})? 匹配0个或者1个[\.][a-z]{2}(比如.cn等) 我不知道一般.com.cn最后部份是不是都是两位的,如果不是请修改{2}为{起始字数,结束字数}
正则表达式匹配电话号码和手机号码
正则表达式 \d{3}-\d{8}|\d{4}-\d{7}
匹配 0511-4405222 |021-87888822
不匹配 02-552255 12345-784787
正则表达式 (^\([0]\d{2}|\d{4}\))(\d{6,7}$)
匹配 (021)1234567 |(0411)123456 | (000)000000
不匹配 (123)1234567 | 025123456 |0252345678
正则表达式匹配用户密码
密码形式可以根据开发需求自己设定,下面是匹配密码的例子:
正则表达式 ^[a-zA-Z]\w{5,17}$
匹配 以字母开头,长度在6~18之间,只能包含字符、数字和下划线
正则表达式匹配日期时间
正则表达式 ^(([0-1]?[0-9])|([2][0-3])):([0-5]?[0-9])(:([0-5]?[0-9]))?$
匹配 12:15 | 10:26:59 |22:01:15
不匹配 24:10:25 | 13:2:60
正则表达式 ^([0]?[1-9]|[1|2][0-9]|[3][0|1])[./-]([0]?[1-9]|[1][0-2])[./-]([0-9]{4}|[0-9]{2})$
匹配 10/03/1979 | 1-1-02 |01.1.2003
不匹配 10/03/197 | 09--02--2004 |01 02 03
正则表达式 ^([2-9]\d{3}((0[1-9]|1[012])(0[1-9]|1\d|2[0-8])|(0[13456789]|1[012])(29|30)|(0[13578]|1[02])31)|(([2-9]\d)(0[48]|[2468][048]|[13579][26])|(([2468][048]|[3579][26])00))0229)$
匹配 20000101 | 20051231 |20040229
不匹配 19990101 | 20053112 |20050229
正则表达式 ^([1-9]|1[0-2]|0[1-9]){1}(:[0-5][0-9][aApP][mM]){1}$
匹配 08:00AM | 10:00am |7:00pm
不匹配 13:00pm | 12:65am
正则表达式匹配IP地址
正则表达式 ^(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])$
匹配 127.0.0.1 |255.255.255.0 | 192.168.0.1
不匹配 1200.5.4.3 | abc.def.ghi.jkl| 255.foo.bar.1
正则表达式 ^((0|1[0-9]{0,2}|2[0-9]{0,1}|2[0-4][0-9]|25[0-5]|[3-9][0-9]{0,1})\.){3}(0|1[0-9]{0,2}|2[0-9]{0,1}|2[0-4][0-9]|25[0-5]|[3-9][0-9]{0,1})(?(\/)\/([0-9]|[1-2][0-9]|3[0-2])|)$
匹配 192.168.0.1 |192.168.0.1/32 | 255.255.0.0/1
不匹配 010.0.0.0 | 192.168.0.1/33| 256.0.1.55
正则表达式 ^(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[0-9]{1,2})(\.(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[0-9]{1,2})){3}$
匹配 97.67.44.20 |199.154.37.214 | 127.0.0.1
不匹配 63.125.94.287 |140.370.a.187 | 94.923.1
正则表达式 /^(([01]?\d?\d|2[0-4]\d|25[0-5])\.){3}([01]?\d?\d|2[0-4]\d|25[0-5])\/(\d{1}|[0-2]{1}\d{1}|3[0-2])$/
匹配 192.168.100.1/24 |0.0.0.0/0
不匹配 192.168.100.1/33 |0.0.0.0/90
正则表达式匹配汉字或中文
正则匹配中文汉字根据页面编码不同而略有区别:
GBK/GB2312编码:[x80-xff>]+ 或 [xa1-xff]+
UTF-8编码:[x{4e00}-x{9fa5}]+/u
转载于:https://www.cnblogs.com/new0801/p/6177020.html
Linux系统编程(18)——正则表达式实用举例相关推荐
- Linux系统编程---18(线程池相关概念及其实现)
线程池 概念: 一堆线程+任务队列 作用 避免大量线程频繁的创建/销毁时间成本 避免瞬间大量线程创建耗尽资源,程序崩溃危险 实现 创建固定数量的线程+创建一个线程安全的任务队列 一种线程使用模式. 线 ...
- Linux系统编程18:超详解进程程序替换exec函数的一些用法
文章目录 (1)进程程序替换是什么 (2)exec-替换函数 (3)实例展示-了解exec函数的替换原理 A:execl和execv B:execlp和execvp C:替换自己的程序和execle ...
- 【README】Linux系统编程必读:本专栏内容提要以及系统调用接口总结
文章目录 前言 第一部分:博客知识点 (1)基础篇 Linux系统编程1:Linux中使用率最高的一些命令 Linux系统编程2:详解Linux中的权限问题 Linux系统编程3:基础篇之详解Linu ...
- 嵌入式Linux系统编程学习之二常用命令
嵌入式Linux系统编程学习之二常用命令 文章目录 嵌入式Linux系统编程学习之二常用命令 前言 一.常用命令 1.su(用户切换) 2.useradd(添加用户) 3.passwd(修改密码) 4 ...
- Linux 系统编程 -进程概念篇
Linux系统编程-进程篇 冯诺依曼体系结构 冯诺依曼的两个重要思想 当代计算机的三级缓存 操作系统 操作系统的概念 操作系统的组成 操作系统作用 Linux下的操作系统体系 进程 进程概念 进程特性 ...
- 资深程序员带你攻克 Linux 系统编程
作者简介:宇文拓,近十年 Linux C/C++ 开发经验,现就职于某创业公司,负责服务器架构与系统设计.曾就职于某通信业知名美企,负责核心网和防火墙产品研发.在 GitHub 上发布了开源项目 An ...
- 攻克 Linux 系统编程
课程亮点 完整学习路线图,系统掌握核心知识点 内核源码深入分析,知其然更知所以然 高频问题全面汇总,精准定位症结所在 八大主题商业案例,实操中获得拔高提升 专家推荐 曾与宇文拓共事五年,他对技术的钻研 ...
- 【Linux】Linux系统编程(入门与系统编程)(一)(环境搭建、常见指令以及权限理解)
目录 linux系统编程 : 1.推动技术进步的基本模式 2.理解操作系统的发展 Linux 背景介绍 UNIX发展的历史: Linux发展历史 开源 Linux的发行版本: a.技术角度 b.商业化 ...
- 【读书笔记】linux系统编程
linux系统编程 原作名:Linux System Programming 作者: Robert Love 第一章 入门和基本概念 1.1 系统编程 应用程序需要与更高层次的库进行交互,系统程序就是 ...
- 【Linux系统编程】进程间通信之无名管道
00. 目录 文章目录 00. 目录 01. 管道概述 02. 管道创建函数 03. 管道的特性 04. 管道设置非阻塞 05. 附录 01. 管道概述 管道也叫无名管道,它是是 UNIX 系统 IP ...
最新文章
- R语言ggplot2可视化指定保存到pdf的图像的具体尺寸、保证缩放的一致性:使得绘图元素(文本、点大小等)在设计上都具有相同的绝对大小、设置全局数据点大小、主题格式、设置图像保存的具体尺寸
- 一直都很喜欢的软件--基于平台
- 无法打开包括文件:“osgGA/MatrixManipulator”:No such file or directory
- Oracle数据库的trigger(触发器)
- 前端学习(2967):实现路由跳转的方式
- java学习(69):java模式设计之适配器
- Oracle 基础知识
- Android开发四大组件
- Hibernate Session合并,更新,保存,saveOrUpdate,持久化示例
- python语言太差_Python语言 最差实践
- 自己动手写操作系统-经典书籍
- 华为电脑和手机一碰传_华为手机怎么一碰传连接电脑传输照片和文件
- 计算机专业英语prototype,[听单词] 计算机专业英语词汇音频72,计算机英语单词MP3...
- 宁波一货船在东海海域沉没
- Halcon卡尺测量
- 跨时钟域同步1---亚稳态的产生和解决方案
- python关于re模块(正则表达式)
- 基于spring boot 的学生科研项目共享平台毕业设计源码271611
- 软件比人可靠——错误管理软件TestDirector
- 解决cuid卡写数据后,无法读取。以及救卡方法
热门文章
- 实现一维卷积神经网络
- 【MATLAB】饼图
- 编写一个Java程序将当100,101,102,103,104,105个数以数组的形式写入到Dest.txt文件中,并以相反的顺序读出显示在屏幕上。
- 文末福利 | 学习如何构建行业知识图谱(以医疗行业为例)
- 基于依存句法规则的篇章级情感分析demo
- css模型安装,【CSS】CSS-框模型+定位+实训练习
- Eclipse用法和技巧六:自动生成get和set方法1
- android 中如何监听耳机键消息
- 维护项目的管理策略案例
- 西门子g120c面板参数设定_西门子PCS7模拟量单位设置