要:
目前,国产化自主安全已在军事指控系统领域逐步推进。设计与实现了一套全国产化自主安全的后勤保障指控系统,包括全国产化硬件平台的设计与适配,以及基于国产化软硬件平台的指控软件系统的设计与实现。在全国产化硬件平台的设计中,分析了国产化计算、存储和通信设备的发展现状,以及在本系统中的选型设计;在指控软件系统的设计中,首先对基础平台软件进行了分析,其次针对本系统在数据接入层和展现层分别采用C/S软件架构和B/S软件架构进行设计与实现,验证了Qt开发框架和B/S软件架构在国产化软硬件平台的适应性。本系统的设计与实现会对国产化关键软硬件在军事信息中的规模化应用和系统化建设起到借鉴作用。
中文引用格式:卫建芳,张瑞权,喻瑶瑶. 基于自主安全的后勤保障指控系统设计与应用[J].电子技术应用,2019,45(7):89-92.
英文引用格式:Wei Jianfang,Zhang Ruiquan,Yu Yaoyao. Design and application of logistics support command and control system based on discretionary security technology[J]. Application of Electronic Technique,2019,45(7):89-92.
0 引言
实现军事指控信息系统全国产化自主安全,是国家军事安全战略的重中之重。之前发生的“棱镜门事件”和“中兴事件”都清楚地表明,军事指控信息系统的自主安全工作迫在眉睫,只有实现军事指控信息系统全国产化自主安全,才能保障我国的军事信息系统建设平时不受限于人、战时不受制于人,才能从根本上降低“后门”之类的信息安全风险[1]。国内现有军事指控信息系统的关键软硬件设备,如操作系统、数据库、处理器等,普遍采用国外厂商的产品,严重受制于人,安全隐患巨大。目前,国家已大力推进全国产化自主安全进程,逐步建设军事指控信息系统的全国产化硬件平台,下一步工作,将基于全国产化硬件平台,通过对等替换、系统性替换或平台替换等方式开展指控软件国产化工作[2]。
本课题从后勤保障指控系统的实际应用情况出发,依据全国产化自主安全原则,对后勤保障指控系统进行了系统架构设计、硬件平台建设以及软件系统建设,其中软件系统的数据接入层和综合显示层分别采用C/S架构和B/S架构,分别验证C/S软件架构和B/S软件架构在国产化硬件系统和国产操作系统平台下的可用性和适应性。
1 系统架构
后勤保障指控系统由硬件平台和软件系统组成。硬件平台由全国产化的服务器、显示微机、磁盘阵列、交换机和单向传输设备组成。软件系统包括基本平台软件和指控系统软件,基础平台软件有国产麒麟操作系统和国产数据库软件,指控系统软件包括接口服务软件和指挥监控软件。后勤保障指控系统架构图如图1所示。
2 硬件平台
在军事信息系统的全国产化过程中,硬件平台的建设是关键,而硬件平台全国产化的核心就是国产通用CPU。目前,依托国家“核高基”重大专项,国产通用CPU已逐步走向系列化和实用化,并已打造出一些成熟的品牌,有龙芯、飞腾和申威等,2018年5月,龙芯、飞腾和申威CPU服务器进入政府采购名录,这对全国化自主安全的推进有重大意义。
在后勤保障指控系统硬件平台中,主要选用飞腾CPU。飞腾CPU是“核高基”重大专项工程成果,飞腾先后推出了FT-1500A、FT-2000、FT-2000+等一系列高性能CPU产品。在性能方面,飞腾CPU是64位通用CPU,兼容ARM V8 指令集,采用国际先进的28 nm工艺流片,具有高性能、低功耗等特点,经测试,FT-2000+系列处理器与2014年Intel至强E5主流服务器CPU性能相当,可实现对Intel中高端“至强”服务器芯片的替代;在应用方面,飞腾联合了400多家企业构建以飞腾CPU为核心的全自主生态系统,覆盖了从高性能计算、服务器、桌面、嵌入式等多个应用领域,为党政办公系统、基础设施关键行业信息系统、云计算与大数据平台、工业控制系统等多个领域的国产化提供全面的解决方案。
后勤保障指控系统硬件平台由全国产化的服务器、显示微机、磁盘阵列、交换机和单向传输设备组成。
(1)服务器与显示微机
随着国产化电子信息产业的发展以及国内企业在技术上的积累,基于国产CPU的计算机设备进步神速,已初步形成一些成熟的品牌,主要有浪潮、曙光和长城等,其产品功能和性能指标已达到业界主流水平,可在试验任务领域的非关键系统中试点应用。浪潮作为国内领先的服务器系统厂商,率先推出了基于飞腾处理器的通用服务器产品,实现了从整机架构、核心部件处理器到操作系统的全自主化研制,产品功能和性能指标处于业界前列,后勤保障指控系统服务器选用浪潮服务器,满足系统应用需求。显示微机选用浪潮DF3010,处理器为飞腾1500A,四核,主频为1.5 GHz;内存为8 GB;独立显卡,核心频率大于1 GHz,显存为2 GB,满足系统综合显示需求。
(2)磁盘阵列
存储是数据的载体,它对于信息安全来说是一道必须守住的底线。存储的自主安全是保证国家信息安全的重要前提和基础。国内厂商一直积极地从存储底层架构、高端存储以及存储核心软件方面寻求突破,通过技术沉淀及发展,形成了自主化的品牌。后勤保障指控系统存储设备选用华胜HSZL-310FB,华胜HSZL-310FB是全国产自主安全的统一存储系统,采用国产化处理器;标配双控制器、32 GB高速缓存/控制器;标配8个千兆iSCSI、4个8 GB FC主机接口,支持CIFS、NFS、iSCSI、FC等协议;提供全中文国产存储管理软件,具备良好的兼容性,针对国产的操作系统及数据库,有良好的性能表现。
(3)交换机
网络交换机产品,虽然不存在与应用系统、数据库等软件的兼容适配问题,但依赖于核心芯片的成熟,随着飞腾、龙芯、申威等CPU的成熟及周边生态的完善,以及盛科高性能交换芯片的量产发布,自主安全交换机也实现了突破式的发展,从硬件到软件,基本实现国产化,完全满足网络设备自主安全的要求。后勤保障指控系统网络设备选用仰联信通G9606,仰G9600系列产品核心器件采用国产CPU、自主研发ASIC芯片和自主研发的软硬件系统,完全规避网络安全隐患,支持各种链路冗余、部件冗余和设备冗余,打造高可靠网络,完全满足系统全国产化自主安全的业务需求。
3 软件系统设计
后勤保障指控系统软件包括基本平台软件和指控系统软件,基础平台软件有国产麒麟操作系统和国产数据库软件,指控系统软件包括接口服务软件和指挥监控软件[3]。
3.1 基础平台软件
基础平台软件包括国产麒麟操作系统和国产数据库。
(1)国产麒麟操作系统
国产操作系统是打造自主安全生态体系的重要一环,目前面向服务器和桌面平台应用的国产操作系统已比较成熟,主要有银河麒麟、中标麒麟、普华操作系统等,已在政务、金融、电力、教育、国防、交通、医疗和制造等多个行业取得广泛深入应用,在后勤保障指控系统中选用银河麒麟操作系统[4]。
(2)国产数据库
数据库是后勤保障指控系统中信息资源管理与信息处理的核心基础软件。近年来,在国家软件扶持政策、“核高基”重大专项以及政府采购等的支持下,国产数据库软件市场规模以20%以上的速度快速增长,人大金仓、达梦、神舟通用、南大通用等企业的国产数据库软件产品的功能和性能都有长足的进步,已经成功应用于政府、军工、电信、电力、金融、教育等行业[5]。在军工行业,神通数据库已成功应用于长征火箭、神舟飞船等型号设计,为保证系统的安全性与稳定性,在后勤保障指控系统中选用神通数据库。
3.2 指控系统软件
为了以弱耦合方式实现后勤保障指控系统的数据集中采集、存储、管理、转发和显示等功能,将后勤保障指控系统软件划分为两个软件子系统:接口服务软件和指挥监控软件。为了积极探索B/S软件架构和C/S软件架构在国产化软硬件平台上的适用性,后勤保障指控系统软件采用B/S、C/S两种模式并存的设计思想,接口服务软件采用C/S软件架构,用Qt进行开发;指挥监控软件采用B/S软件架构,基于前后端分离设计思想,前端采用HTML5+CSS3+JavaScript进行开发,后台服务器端采用Java和Scala实现。
(1)接口服务软件
接口服务软件是后勤保障指控系统数据的输入接口,主要功能是实现各种数据采集接口,从供水、供暖、供电、气象、试验任务等系统采集实时数据,经过数据处理,存储至指控系统数据库,并推送给指挥监控后台。接口服务软件是后勤保障指控系统的核心,为保障系统的健壮性和可靠性,接口服务软件采用双机热备运行模式,通过心跳检测技术对接口服务器双机进行主备机管理。接口服务软件采用模块化分层设计思想,整个软件划分为3层:
①通信接口层:主要实现与外部系统进行数据交互,实现各种数据通信接口,完成数据采集、转发和主备机切机等功能。
②数据应用层:主要实现数据处理、存储、推送功能。
③人机交互层:主要处理人机交互数据,完成数据配置、状态显示和通信数据的实时监控。
(2)指挥监控软件
指挥监控软件是后勤保障指控系统的综合显示窗口,主要功能是实现各集成接入系统的实时数据仿真显示;根据监控数据对各系统的异常信息进行检测诊断,给出辅助决策信息;全方位展示勤务系统风采,图像化展示各系统各点号的详细情况;对试验任务进行配置,并流程化显示试验任务进程;对系统软硬件运行状态进行监控显示;对各系统历史数据、故障数据和试验任务数据进行查询显示[6]。指挥监控软件采用B/S软件架构,主要包括客户端和服务器端两部分。服务器端主要实现实时数据接收、处理和分发功能、数据异常检测功能、系统软硬件运行状态监控功能、试验任务配置管理功能和历史数据查询服务功能[7]。客户端主要根据服务器端提供的数据及服务进行前端展示,包括系统风采展示、数据仿真监控显示、系统运管监控显示、试验任务流程推进显示和数据查询分析展示。
根据指控系统软件设计方案,确定指控系统软件系统架构图如图2所示。
4 软件系统实现
(1)接口服务软件
接口服务软件采用C/S软件架构,使用Qt Creater集成开发工具进行软件编码实现,Qt是一个跨平台的C++图形用户界面应用程序框架,通过“一次编写,随处编译”的方式提供统一的跨平台解决方案,对银河麒麟操作系统提供友好支持。Qt提供了丰富的API函数库,包括多达250个以上的C++类,支持OpenGL图形渲染,极大提高了软件开发效率。依据接口服务软件设计,对各模块进行类包实现,主要的类包如表1所示。
(2)指挥监控软件
指挥监控软件采用B/S软件架构,主要包含前端和后台服务器端两部分,前端基于Node.js框架,采用HTML5+CSS3+JavaScript进行软件编码实现;后台服务器端采用Java和Scala实现,其中包含5个Java类包和7个Scala 类包,具体类包的功能如表2所示。
5 结论
基于后勤保障指控系统的应用需求,以及全国产自主安全的建设原则,本文提出了一种全国产化软硬件平台的指控系统架构,通过对系统硬件平台进行建设以及国产化适配,对软件系统进行设计、开发与应用,验证了Qt开发框架和B/S软件架构在国产化软硬件平台的适应性。
目前,国内已基本形成了自主安全的全国产化产业链,从底层的CPU,到服务器、微机等整机产品,到操作系统、数据库、中间件、办公软件等基础软件产品[8]。后续,随着国家政策的扶持和引导,自主安全技术的发展将向商业化、规模化稳步推进,各行业各领域的国产化工作也将逐步开展,基于国产化软硬件平台的应用软件研发将会成为普遍需求,本文也为此工作的开展起到借鉴作用。
参考文献
[1] 史芳,蔡思捷,李威.军事信息系统国产化关键软硬件的应用研究[J].信息化研究,2016,42(4):14-16.
[2] 程健,吴蔚.国产化计算机平台在指挥控制系统中的应用研究[J].自动化与信息工程,2011(3):41-44.
[3] 范成,李芳芳,范祥华,等.基于国产化软硬件平台的指控系统软件设计[C].2014第二届中国指挥控制大会论文集(上),2014:175-178.
[4] 李永刚,李欣泉,郭力兵,等.麒麟操作系统平台软时统同步方法研究[J].电子技术应用,2018,44(9):129-133.
[5] 段荣.国产数据库在军事信息系统中的应用[J].电子技术与软件工程,2015(8):208-209.
[6] 张超,赵平,何静,等.基于MVC模式的指控系统软件设计与实现[J].强激光与粒子束,2013,25(5):91-95.
[7] 陈奡,王超,张永,等.国产化Web信息系统性能评估模型与优化方法[J].指挥信息系统与技术,2015,6(4):41-45.
[8] 谢宙宇,臧飞.基于国产软硬件的信息系统性能优化技术[J].指挥信息系统与技术,2014,5(3):59-63.
作者信息:
卫建芳,张瑞权,喻瑶瑶
(华北计算机系统工程研究所,北京100083)
层架构(3-tier application) ,通常就是将整个业务应用划分为:表现层(UI)、业务逻辑层(BLL)、数据访问层(DAL)。
三层架构图
表现层(UI),通俗讲就是展现给用户的界面,对应项目中的Web层包含Servlet和Controller等。
业务逻辑层(BLL):也称作领域层,负责系统业务逻辑的处理,对应项目中Service和ServiceImpl等。
数据访问层(DAL):该层所做事务直接操作数据库,针对数据的增添、删除、修改、更新、查找等,对应项目中的Dao。
参考范文
摘要:
本人于 2018 年 1 月参与了中石化 XX 油田 XX 采油厂“用电管理系统”的项目建设,该系统建设目标是实现分单位、分线路、分系统评价、优化、考核,全面提升采油厂用电管理水平。在该项目组中我担任系统架构师一职,主要负责系统整体架构设计。本文以该项目为例,讨论系统三层架构的设计过程,重点讨论系统在设计过程和在设计实施过程中碰到的一些问题和解决方法,最后说明采用三层架构所带来的效果,以及可以改进的地方。在我的带领下,项目实施非常顺利,并获得采油厂领导及厂、区多级用户的一致好评,该项目也成功获得了当年度分公司科技进步创新一等奖。
正文:
“用电管理系统”项目是采油厂能源管控中心系统的一个子系统。能源管控中心是中石化集团公司十三五规划中的“能效倍增”计划在胜利油田分公司的示范应用项目,该示范项目能够在实现企业节能目标管理、能源计量统计、节能潜力识别、能效分析优化的同时,有效支撑企业实施节能技术改造、促进企业用能水平不断提升“用电管理系统”的建设目标是建立覆盖厂、区两级用电管理一体化体系,实现分单位、分线路、分系统评价、优化、考核,达到电网运行质量实时监控、异常情况精准管控、能耗总量全面受控,按照运行产量的方式运行电量,全面提升采油厂用电管理水平。该项目功能设计参考 PDCA 闭环管理的理念,共设计包括用电计划、用电分析、用电优化、用电考核、设备管理等五大功能模块。 我作为单位技术骨干之一,主持并参与了项目计划制定、需求分析、设计、编码、设计、测试等阶段的工作。由于油田系统对安全性、可靠性、可用性和扩展性要求很高,
我选择了三层 B/S 架构作为该系统的软件体系架构,下面,我将分层次详细介绍三层 B/S 软件体系结构的设计过程。
(1)表示层采用了 HTML5+Vue +BootStrap 等前端技术。
由于用户提出全厂的电力系统拓扑图能够自由定制,我们综合考虑多种方案后选择 了使用 HTML5 Canvas 技术来实现电力系统拓扑图的自由定制。 HTML5 是互联网的下一 代标准,是构建以及呈现互联网内容的一种语言方式.被认为是互联网的核心技术之一。 最终采用 HTML5 Canvas 技术实现的拓扑图的非常轻巧,性能出色,能够支持上万图元,操作流畅,并且支持矢量图形,无极缩放等。Vue 是一套用于构建用户界面的渐进式JavaScript 框架。Vue 与其他 JS 库不同,它的核心库只关注视图层,非常容易学习,非常容易且方便与第三方库或既有项目整合。项目组的两个新接触 vue 的开发人员在极短时间内就掌握了相关开发技巧,为项目前端的快速开发打下了良好的基础。Bootstrap是最受欢迎的基于 HTML、CSS、JS 的框架之一,是一个用于快速开发 Web 应用程序和网站的前端框架。我们采用基于 Bootstrap 的系统界面样式及响应式的展现形式得到了客户的称赞,为后续项目工作的开展打下了良好的基础。
(2)中间业务逻辑层采用 SpringMVC+Apache Shiro,并使用 ehcache 缓存技术以提高访问效率。
我们选择了当前最优秀的 MVC 框架之一的 SpringMVC 来简化开发,使开发人员可以专注于表示逻辑和业务逻辑的开发工作,SpringMVC 是一种实现了 Web MVC 设计模式的请求驱动类型的轻量级 Web 框架。通过框架的使用,缩短了开发周期,减少了开发费用和维护费用,提高了开发的成功率。基于安全性方面考虑,我们选择 Apache Shiro,它是一个功能强大且易于使用的 Java 安全框架,为开发人员提供了一个直观而全面的解决方案,用于身份验证、授权、加密和会话管理。通过使用 SpringMVC+Apache Shiro的分层设计,实现了各层次低耦合,高内聚,并严格遵循了 web 安全的相关规范,通过前后台双重验证,参数编码传输,密码 SHA-256 加密存储,shiro 权限验证等手段,从根本上避免了 SQL 注入,XSS 攻击,CSRF 攻击等常见的 web 攻击手段。为防止频繁读取数据库导致系统性能下降问题,我们选择采用开源的 J2Cache 两级缓存框架,即一级采用 Ehcache,二级采用 Redis 缓存技术,通过该框架的使用,提高了系统性能和访问效率。
(3)数据层选择 MyBatis,数据库选择 Oracle 11g。
数据层方面我们选择了 MyBatis 作为持久层框架,它可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs(Plain Ordinary Java Object,普通的 Java 对象)映射成数据库中的记录。MyBatis 简单易学、灵活并且解除了 sql 与程序代码的耦合,通过提供 DAO 层,将业务逻辑和数据访问逻辑分离,使系统的设计更清晰,更易维护,更易单元测试。这种 sql 和代码分离的方式,极大提高了系统的可维护性。 另外基于安全性和稳定性方面考虑,我们选择了 Oracle 11g 作为数据库。 但是,在设计的过程中也遇到了一些困难,我们主要采取了以下的办法来解决:
(1)电力拓扑库设计。项目启动伊始所面临最大的难题是厘清全厂一百多条供电线路及线路上所带的提升、注入、集输、转供、后辅等多类用电数据,实现线路用电数据的闭合。经过对在用系统及数据库的多次调研分析发现,该库共需涉及 EPBP 电力库,源头库,PCS 数据库,厂用电管理库,设备档案库以及分线计量库等 6 类不同数据源,数据关系极其复杂。由于项目组比较缺乏实际的现场生产经验,对这些复杂数据源毫无头绪,无从下手。但通过项目组主动与甲方多次采用用户访谈、发放调查问卷、联合需求计划会议及现场观摩的方式进行沟通,对多类业务数据有了较为清晰的认识,经过项目组的共同努力与甲方的积极配合,中间又经历了数次返工、改版,最终成功完成了电网拓扑数据库设计。完成后的拓扑库共设计六十余张数据表,该设计逻辑关系清晰、具有良好的可扩展性,为后续软件开发工作的顺利进行打下了坚实的基础。系统上线后,全厂每天的实际用电约在 110 万 kWh 左右,通过数据闭合后自动采集的用电数据达到了100 万 kWh 左右,线损约在 10%左右,基本满足线路设计的线损要求,实际运行效果良好,达到了厂领导提出的“像运行产量一样运行电量”的要求。
(2)多系统数据集成。采油厂用电管理系统的涉及的业务数据分散在不同系统库中。目前油田油水井日度生产数据主要使用源头数据库存储,实时数据采用现有 PCS 系统数据库存储,集输相关数据使用采油厂自建的分队计量系统库存储,注水相关数据采用油田统一搭建的 EPBP 系统库存储,电力相关数据由电力分公司管理和存储。为了解决不同库之间的数据差异问题,我们对相关业务数据进行统一归集,通过 ETL 的方式,每天自动将不同业务系统的数据进行抽取、清洗转换,然后加载到用电管理系统数据库,从而将目前分散、零乱、标准不统一的数据整合到一起,为系统的决策提供分析依据。
由于软件三层架构设计得当,并采取了有效的措施去解决设计中遇到的问题,用电管理系统最后按计划完成并顺利投入运行,不但保证了系统的开放性、可用性和互用性,取得了良好的经济效益和管理效益,而且我的软件三层架构设计得到了采油厂领导和厂、区两级用户的一致认同与称赞,为系统的试运行打下了良好的基础,该项目也获得了当年度分公司科技进步创新一等奖。
在总结经验的同时,我也看到了我在软件三层架构设计中的不足之处:
首先:找标杆算法过于简单。由于油田现有数据质量限制,存在很多空数据、假数据,我们的找标杆算法虽然在理论上经过验证,但在实际应用过程中发现,四项以上的参数组合经常无法返回正确结果,这样对需要参考对比结果的技术人员非常不友好。后续我们经过多次与相关关键客户分析讨论,终于确定了采用多项单参数最优的方式进行标杆筛选,获得了相关客户的认可和领导的肯定。
其次,数据库层面存在很多无效的存储过程与定时任务,对数据库性能造成了影响。由于是在原系统基础上开发的子系统,原系统中存在大量的存储过程与定时任务,我们在用电管理系统开发过程中遇到过多次数据库 session 过多造成的问题,如存储过程无法编译、数据库无法访问等。后续经过项目组的不懈努力,通过将大部分无效存储过程进行重构整合,对定时任务进行重新分配的方式,解决这个困扰大家已久的难题。对于第一种情况,通过及时的分析沟通和对算法的优化,保证了中间层的业务逻辑处理的准确性和表现层结果视图显示的完整性,提高了用户体验质量,而第二种情况,对这种高水平高价值的遗留系统问题,我们采用了重构整合的方式进行了改造,保证了系统的延续性。为了更好地开展系统分析设计工作,我也将在以后的工作实践中不断地学习,提高自身素质和能力,为我国软件事业贡献自己微薄的力量。
.正则的历史及由来
首先先来扫清一个误区,老是有人认为正则表达式是javascript自己发明的,这当然是不正确的。在遥远的1956年,一位名叫Stephen Kleene的数学家在McCulloch和pitts早期工作的基础上,发表了一篇论文,讲述的是神经元的表示方法。在这篇论文中第一次提出了了正则表达式的概念。所谓的正则表达式就是用来描述被他称为“正则集的代数”的表达式,因此就取了“正则表达式”这个看似奇怪的名字。
在随后的日子里,人们逐渐发现可以将正则表达式应用于使用ken Thompson的计算搜索算法的一些早期研究,Ken Thompson是Unix的主要发明人,第一个将正则表达式应用在应用程序上的就是Unix中的qed编辑器。从那个时候起直至现在正则表达式都是编辑器和搜索工具中的一个重要部分。
正则表达式的发展历史其实并不是特别的长远,但是推出之后却迅速被各大编程语言所吸收采纳。这主要得益于它自己的特点,我认为有以下三点。
第一,高效,相较于传统的验证方式,正则表达式可以更高效的完成需要做的验证工作。
第二,捕获字符串的能力强,正则可以很好的完成需求,比如截取url的域名或者其他的内容等等。
第三,表达灵活和写法简洁。从表单中复杂的各种验证到对字符串的各种处理,都可以用正则表达式轻松实现。
二.正则表达式的定义
正则表达式是用来描述字符串匹配格式,可以用来检索一个字符串中是否含有某种子字符串,并将匹配的子字符串做替换或者从某个串中取出符合某个条件的子字符串等。
正则表达式是由普通字符(a-z)以及特殊字符(也叫元字符)组成的文字模式。正则表达式就是一个模板,将这个模板与所搜索的字符串进行匹配。
2.1普通字符
由所有那些未显示的指定为元字符的打印和非打印字符组成。这就包括了所有的大写和小写字符字符,所有数字,所有的标点符号以及一些符号。至于有哪些符号,我在这里就不说了,大家记住下面的特殊字符就可以了,因为除了特殊字符就是普通字符了。就跟考试的时候说及格或者不及格的时候一样。我其实并不需要把每个人是不是考试的成绩都告诉大家,我只需要说下没及格的同学的名字,那没念到名字的同学肯定就知道自己过了。
2.2特殊字符
所谓特殊字符,指的是在正则中有特殊含义的字符,比方说现在要查找“*.exe”中的.。但是.在正则中有特定的意思,表示的是表示除换行符(\n)以外的任何字符串的意思。那如果我们要查找文件名中带有.的文件,就需要对.进行转义,即在其前面加一个 \,表示起来就是\.。是不是很绕?别怕,在正则中特殊字符并不多,下面我会为大家一一列出。
正则表达式里的特殊字符$ ,( ) ,* , + , . ,[ , ? , \ , ^ , |
$匹配输入的字符串的结尾位置。
()标记一个子表达式的开始和结束位置。
*匹配前面的子表达式零次或多次。
+匹配前面的子表达式一次或多次。
.匹配除换行符(\n)之外的任何单字符。
[标记一个中括号表示式的开始。
?匹配前面的子表达式零次或一次。
{标记限定表达式的开始。
\将下个字符标记为特殊字符,或原意字符,或向后引用,或八进制转义符。
^匹配输入字符串的开始位置,除非在方括号表达式中使用,此时它表示不接受该字符集合。
|指明两项之间的一个选择。
2.3限定符
限定符用来指定正则表达式的一个给定的内容必须要出现多少次才能满足匹配。一共有*,+,?,{n},{n,},{n,m}共6种。
*匹配前面的子表达式零次或多次.
+匹配前面的自表达式一次或多次,?匹配前面的子表达式零次或一次。
{n} n是一个非负整数,匹配确定的n次。
{n,}n是一个非负整数,至少匹配n次。
{n,m}m和n均为非负整数,且n<=m,最少匹配n次且最多匹配m次。
2.4定位符
用来描述字符串或单词的边界,^和$分别指字符串的开始和结束,\b描述单词的前或后边界,\B表示非单词边界,不能对定位符使用限定符。
好了,这就介绍完了,是不是觉得很easy?
三.正则表达式在web中的应用
正则表达式在web开发中的应用广泛,可以进行数据格式的检验,替换指定文本,提取感兴趣的文本内容等。
例如:验证字符串中E-mail地址的合法性
邮件地址格式是“用户名@域名”,对于用户名,除了数字和字母外,有的允许有“-”,有的允许有“.”,也有的呢两者都可,还有的甚至允许其他的特殊字符。对此我们只能根据具体情况判断。文字中假设除字母和数字外还允许“.”“-”并且“.”“-”不能出现在首末位。“,”“.”“-”不能相连。域名中各段除数字和字母外只允许出现”-”且不能不出现在首位和末位,各段用“.”连接,我们可以从域名得知最后一段大于一位且只有字母,根据以上内容我们可以写出表达式俩判断该串是否是合法的邮件地址。
是不是感觉很麻烦,光听规则就感到头疼?别急,分部解释如下:
^:匹配开始
([a-z0-9A-Z]+[-|\.]?)+:数字或字母大于一位,“-”或”.“以上组合重复1次以上。
[a-z0-9A-Z]:用户名以数字或字母结尾。
@:匹配“@”[a-z0-9A-Z]+匹配多位数字或字母
(-[a-z0-9A-Z]+)?:匹配一加多位数字或字母0次或1次。
\.:匹配”.”
+:匹配括号内的内容多次
[a-zA-Z]{2,}匹配字母2次以上
$:匹配结尾把上面的各项组合一起,就可以匹配一个比较全面的邮件地址,正则表示式如下:
^([a-z0-9A-Z]+[-|\.]?)+[a-z0-9A-Z]@([a-z0-9A-Z]+(-[a-z0-9A-Z]+)?\.)+[a-zA-Z]{2,}$
复杂么?整个来看确实还蛮复杂的,但当你把功能分开,先逐个实现,再组合在一起,其实也没那么复杂吧。
千锋“HTML5”训练营是全国最好的全栈工程师和架构师的培训基地,“正则表达式”是目前课程体系(V6.5)高级部分的核心课程之一。
全栈工程师需要懂正则来做各种表单验证,字符串处理,架构师也要懂正则表达式,因为框架中都会用到正则表达式。那么,根据前文提到的,正则表达式理所当然是我们必须学会的语言之一。千锋HTML5的正则表达式项目开发课程有啥特点呢?最大的特点就是突出实用和高效。在精通前端的基础上学习正则表达式,能够更好的站在更高的层次去思考和学习正则表达式。
正则表达式项目开发课程如何讲授呢?主要突出以下几点:
第一,循序渐进。本课程先从基础讲起,先让学生熟悉更种字符串操作,掌握字符串的验证方式。然后结合实际,找一个实际的在线项目,然后分析验证的方式和方法,介绍正则表达式并讲解正则的基本语法,常见符号。
第二,项目驱动。全程以项目来驱动知识点的学习,在了解实际的需求后,用正则表达式实现之前在线项目的验证需求。
第三,注重实战。学生在听完讲师的课堂面授后,给学生找个具体的项目,要求学生亲自动手完成验证的需求,从而在实际中体会正则的好处。
四.结语
正则表达式语法简洁,功能强大,特别在对数据的验证问题上,在日常数据处理与软件开发中,正则表达式也已成为不可缺少的工具,相信随着web的发展,正则表达式的应用会越来越强大越来越易使用。
(文章转载自“扣丁学堂”公众号)
*请认真填写需求信息,我们会在24小时内与您取得联系。