ISO8583包(简称8583包)是一个国际标准的包格式,最多由128个字段域组成,每个域都有统一的规定,并有定长与变长之分。
     8583包前面一段为位图,用来确定包的字段域组成情况。  
     其中位图是8583包的灵魂,它是打包解包确定字段域的关键, 而了解每个字段域的属性则是填写数据的基础。  

1、 位图描述如下:  
位图位置:1  
格式:定长  
类型:B16(二进制16位,16*8=128bit)  
描述:  
   如将位图的第一位设为'1',表示使用扩展位图(128个域),否则表示只使用基本位图(64个域)。  
   如使用某数据域,应在位图中将相应的位设位'1',如使用41域,需将位图的41位设为'1'。  
选用条件:如使用65到128域,需设位图域第一位为'1'  

2、每个域的定义如下:  
typedef struct ISO8583  
{  
    int bit_flag; /*域数据类型0 — string, 1 — int, 2 — binary*/  
    char *data_name; /*域名*/  
    int length; /*数据域长度*/  
    int length_in_byte;/*实际长度(如果是变长)*/  
    int variable_flag; /*是否变长标志0:否 2:2位变长, 3:3位变长*/  
    int datatyp; /*0 — string, 1 — int, 2 — binary*/  
    char *data; /*存放具体值*/  
    int attribute; /*保留*/  
} ISO8583;

ISO8583 Tbl8583[128] =  
{  
/* FLD 1 */ {0,”BIT MAP,EXTENDED “, 8, 0, 0, 2, NULL,0},  
/* FLD 2 */ {0,”PRIMARY ACCOUNT NUMBER “, 22, 0, 2, 0, NULL,0},  
/* FLD 3 */ {0,”PROCESSING CODE “, 6, 0, 0, 0, NULL,0},  
/* FLD 4 */ {0,”AMOUNT, TRANSACTION “, 12, 0, 0, 1, NULL,0},  
/* FLD 5 */ {0,”NO USE “, 12, 0, 0, 0, NULL,0},  
/* FLD 6 */ {0,”NO USE “, 12, 0, 0, 0, NULL,0},  
/* FLD 7 */ {0,”TRANSACTION DATE AND TIME “, 10, 0, 0, 0, NULL,0},  
/* FLD 8 */ {0,”NO USE “, 8, 0, 0, 0, NULL,0},  
/* FLD 9 */ {0,”NO USE “, 8, 0, 0, 0, NULL,0},  
/* FLD 10 */ {0,”NO USE “, 8, 0, 0, 0, NULL,0},  
/* FLD 11 */ {0,”SYSTEM TRACE AUDIT NUMBER “, 6, 0, 0, 1, NULL,0},  
/* FLD 12 */ {0,”TIME, LOCAL TRANSACTION “, 6, 0, 0, 0, NULL,0},  
/* FLD 13 */ {0,”DATE, LOCAL TRANSACTION “, 4, 0, 0, 0, NULL,0},  
/* FLD 14 */ {0,”DATE, EXPIRATION “, 4, 0, 0, 0, NULL,0},  
/* FLD 15 */ {0,”DATE, SETTLEMENT “, 4, 0, 0, 0, NULL,0},  
/* FLD 16 */ {0,”NO USE “, 4, 0, 0, 0, NULL,0},  
/* FLD 17 */ {0,”DATE, CAPTURE “, 4, 0, 0, 0, NULL,0},  
/* FLD 18 */ {0,”MERCHANT'S TYPE “, 4, 0, 0, 0, NULL,0},  
/* FLD 19 */ {0,”NO USE “, 3, 0, 0, 0, NULL,0},  
/* FLD 20 */ {0,”NO USE “, 3, 0, 0, 0, NULL,0},  
/* FLD 21 */ {0,”NO USE “, 3, 0, 0, 0, NULL,0},  
/* FLD 22 */ {0,”POINT OF SERVICE ENTRY MODE “, 3, 0, 0, 0, NULL,0},  
/* FLD 23 */ {0,”NO USE “, 3, 0, 0, 0, NULL,0},  
/* FLD 24 */ {0,”NO USE “, 3, 0, 0, 0, NULL,0},  
/* FLD 25 */ {0,”POINT OF SERVICE CONDITION CODE “, 2, 0, 0, 0, NULL,0},  
/* FLD 26 */ {0,”NO USE “, 2, 0, 0, 0, NULL,0},  
/* FLD 27 */ {0,”NO USE “, 1, 0, 0, 0, NULL,0},  
/* FLD 28 */ {0,”field27 “, 6, 0, 0, 0, NULL,0},  
/* FLD 29 */ {0,”NO USE “, 8, 0, 1, 0, NULL,0},  
/* FLD 30 */ {0,”NO USE “, 8, 0, 1, 0, NULL,0},  
/* FLD 31 */ {0,”NO USE “, 8, 0, 1, 0, NULL,0},  
/* FLD 32 */ {0,”ACQUIRER INSTITUTION ID. CODE “, 11, 0, 2, 0, NULL,0},  
/* FLD 33 */ {0,”FORWARDING INSTITUTION ID. CODE “, 11, 0, 2, 0, NULL,0},  
/* FLD 34 */ {0,”NO USE “, 28, 0, 2, 0, NULL,0},  
/* FLD 35 */ {0,”TRACK 2 DATA “, 37, 0, 2, 0, NULL,0},  
/* FLD 36 */ {0,”TRACK 3 DATA “,104, 0, 3, 0, NULL,0},  
/* FLD 37 */ {0,”RETRIEVAL REFERENCE NUMBER “, 12, 0, 0, 0, NULL,0},  
/* FLD 38 */ {0,”AUTH. IDENTIFICATION RESPONSE “, 6, 0, 0, 0, NULL,0},  
/* FLD 39 */ {0,”RESPONSE CODE “, 2, 0, 0, 0, NULL,0},  
/* FLD 40 */ {0,”NO USE “, 3, 0, 0, 0, NULL,0},  
/* FLD 41 */ {0,”CARD ACCEPTOR TERMINAL ID. “, 8, 0, 0, 0, NULL,0},  
/* FLD 42 */ {0,”CARD ACCEPTOR IDENTIFICATION CODE “, 15, 0, 0, 0, NULL,0},  
/* FLD 43 */ {0,”CARD ACCEPTOR NAME LOCATION “, 40, 0, 0, 0, NULL,0},  
/* FLD 44 */ {0,”ADDITIONAL RESPONSE DATA “, 25, 0, 2, 0, NULL,0},  
/* FLD 45 */ {0,”NO USE “, 76, 0, 2, 0, NULL,0},  
/* FLD 46 */ {0,”NO USE “,999, 0, 3, 0, NULL,0},  
/* FLD 47 */ {0,”field47 “,999, 0, 3, 0, NULL,0},  
/* FLD 48 */ {0,”ADDITIONAL DATA — PRIVATE “,999, 0, 3, 0, NULL,0},  
/* FLD 49 */ {0,”CURRENCY CODE,TRANSACTION “, 3, 0, 0, 0, NULL,0},  
/* FLD 50 */ {0,”CURRENCY CODE,SETTLEMENT “, 3, 0, 0, 0, NULL,0},  
/* FLD 51 */ {0,”NO USE “, 3, 0, 0, 0, NULL,0},  
/* FLD 52 */ {0,”PERSONAL IDENTIFICATION NUMBER DATA “, 8, 0, 0, 2, NULL,0},  
/* FLD 53 */ {0,”SECURITY RELATED CONTROL INformATION”, 16, 0, 0, 0, NULL,0},  
/* FLD 54 */ {0,”ADDITIONAL AMOUNTS “,120, 0, 3, 0, NULL,0},  
/* FLD 55 */ {0,”NO USE “,999, 0, 3, 0, NULL,0},  
/* FLD 56 */ {0,”NO USE “,999, 0, 3, 0, NULL,0},  
/* FLD 57 */ {0,”NO USE “,999, 0, 3, 0, NULL,0},  
/* FLD 58 */ {0,”NO USE “,999, 0, 3, 0, NULL,0},  
/* FLD 59 */ {0,”NO USE “,999, 0, 3, 0, NULL,0},  
/* FLD 60 */ {0,”NO USE “, 5, 0, 3, 0, NULL,0},  
/* FLD 61 */ {0,”NO USE “,999, 0, 3, 0, NULL,0},  
/* FLD 62 */ {0,”NO USE “, 11, 0, 3, 0, NULL,0},  
/* FLD 63 */ {0,”NO USE “, 11, 0, 3, 0, NULL,0},  
/* FLD 64 */ {0,”MESSAGE AUTHENTICATION CODE FIELD “, 8, 0, 0, 2, NULL,0},  
/* FLD 65 */ {0,”NO USE “,999, 0, 3, 0, NULL,0},  
/* FLD 66 */ {0,”NO USE “, 1, 0, 0, 0, NULL,0},  
/* FLD 67 */ {0,”NO USE “,999, 0, 3, 0, NULL,0},  
/* FLD 68 */ {0,”NO USE “,999, 0, 3, 0, NULL,0},  
/* FLD 69 */ {0,”NO USE “,999, 0, 3, 0, NULL,0},  
/* FLD 70 */ {0,”SYSTEM MANAGEMENT INformATION CODE “, 3, 0, 0, 0, NULL,0},  
/* FLD 71 */ {0,”NO USE “,999, 0, 3, 0, NULL,0},  
/* FLD 72 */ {0,”NO USE “,999, 0, 3, 0, NULL,0},  
/* FLD 73 */ {0,”NO USE “, 6, 0, 0, 0, NULL,0},  
/* FLD 74 */ {0,”NUMBER OF CREDITS “, 10, 0, 0, 0, NULL,0},  
/* FLD 75 */ {0,”REVERSAL NUMBER OF CREDITS “, 10, 0, 0, 0, NULL,0},  
/* FLD 76 */ {0,”NUMBER OF DEBITS “, 10, 0, 0, 0, NULL,0},  
/* FLD 77 */ {0,”REVERSAL NUMBER OF DEBITS “, 10, 0, 0, 0, NULL,0},  
/* FLD 78 */ {0,”NUMBER OF TRANSFER “, 10, 0, 0, 0, NULL,0},  
/* FLD 79 */ {0,”REVERSAL NUMBER OF TRANSFER “, 10, 0, 0, 0, NULL,0},  
/* FLD 80 */ {0,”NUMBER OF INQUIRS “, 10, 0, 0, 0, NULL,0},  
/* FLD 81 */ {0,”AUTHORIZATION NUMBER “, 10, 0, 0, 0, NULL,0},  
/* FLD 82 */ {0,”NO USE “, 12, 0, 0, 0, NULL,0},  
/* FLD 83 */ {0,”CREDITS,TRANSCATION FEEAMOUNT “, 12, 0, 0, 0, NULL,0},  
/* FLD 84 */ {0,”NO USE “, 12, 0, 0, 0, NULL,0},  
/* FLD 85 */ {0,”DEBITS,TRANSCATION FEEAMOUNT “, 12, 0, 0, 0, NULL,0},  
/* FLD 86 */ {0,”AMOUNT OF CREDITS “, 16, 0, 0, 0, NULL,0},  
/* FLD 87 */ {0,”REVERSAL AMOUNT OF CREDITS “, 16, 0, 0, 0, NULL,0},  
/* FLD 88 */ {0,”AMOUNT OF DEBITS “, 16, 0, 0, 0, NULL,0},  
/* FLD 89 */ {0,”REVERSAL AMOUNT OF DEBITS “, 16, 0, 0, 0, NULL,0},  
/* FLD 90 */ {0,”ORIGINAL DATA ELEMENTS “, 42, 0, 0, 0, NULL,0},  
/* FLD 91 */ {0,”FILE UPDATE CODE “, 1, 0, 0, 0, NULL,0},  
/* FLD 92 */ {0,”NO USE “,999, 0, 3, 0, NULL,0},  
/* FLD 93 */ {0,”NO USE “,999, 0, 3, 0, NULL,0},  
/* FLD 94 */ {0,”SERVICE INDICATOR “, 7, 0, 0, 0, NULL,0},  
/* FLD 95 */ {0,”REPLACEMENT AMOUNTS “, 42, 0, 0, 0, NULL,0},  
/* FLD 96 */ {0,”NO USE “, 8, 0, 0, 0, NULL,0},  
/* FLD 97 */ {0,”AMOUNT OF NET SETTLEMENT “, 16, 0, 0, 0, NULL,0},  
/* FLD 98 */ {0,”NO USE “,999, 0, 3, 0, NULL,0},  
/* FLD 99 */ {0,”SETTLEMENT INSTITUTION ID “, 11, 0, 2, 0, NULL,0},  
/* FLD 100 */ {0,”RECVEING INSTITUTION ID “, 11, 0, 2, 0, NULL,0},  
/* FLD 101 */ {0,”FILENAME “, 17, 0, 2, 0, NULL,0},  
/* FLD 102 */ {0,”ACCOUNT IDENTIFICATION1 “, 28, 0, 2, 0, NULL,0},  
/* FLD 103 */ {0,”ACCOUNT IDENTIFICATION2 “, 28, 0, 2, 0, NULL,0},  
/* FLD 104 */ {0,”NO USE “,999, 0, 3, 0, NULL,0},  
/* FLD 105 */ {0,”NO USE “,999, 0, 3, 0, NULL,0},  
/* FLD 106 */ {0,”NO USE “,999, 0, 3, 0, NULL,0},  
/* FLD 107 */ {0,”NO USE “,999, 0, 3, 0, NULL,0},  
/* FLD 108 */ {0,”NO USE “,999, 0, 3, 0, NULL,0},  
/* FLD 109 */ {0,”NO USE “,999, 0, 3, 0, NULL,0},  
/* FLD 110 */ {0,”NO USE “,999, 0, 3, 0, NULL,0},  
/* FLD 111 */ {0,”NO USE “,999, 0, 3, 0, NULL,0},  
/* FLD 112 */ {0,”NO USE “,999, 0, 3, 0, NULL,0},  
/* FLD 113 */ {0,”NO USE “,999, 0, 3, 0, NULL,0},  
/* FLD 114 */ {0,”NO USE “,999, 0, 3, 0, NULL,0},  
/* FLD 115 */ {0,”NO USE “,999, 0, 3, 0, NULL,0},  
/* FLD 116 */ {0,”NO USE “,999, 0, 3, 0, NULL,0},  
/* FLD 117 */ {0,”NO USE “,999, 0, 3, 0, NULL,0},  
/* FLD 118 */ {0,”NO USE “,999, 0, 3, 0, NULL,0},  
/* FLD 119 */ {0,”NO USE “,999, 0, 3, 0, NULL,0},  
/* FLD 120 */ {0,”NO USE “,999, 0, 3, 0, NULL,0},  
/* FLD 121 */ {0,”NO USE “,999, 0, 3, 0, NULL,0},  
/* FLD 122 */ {0,”NO USE “,999, 0, 3, 0, NULL,0},  
/* FLD 123 */ {0,”NEW PIN DATA “, 8, 0, 3, 2, NULL,0},  
/* FLD 124 */ {0,”NO USE “,999, 0, 3, 0, NULL,0},  
/* FLD 125 */ {0,”NO USE “,999, 0, 3, 0, NULL,0},  
/* FLD 126 */ {0,”NO USE “,999, 0, 3, 0, NULL,0},  
/* FLD 127 */ {0,”NO USE “,999, 0, 3, 0, NULL,0},  
/* FLD 128 */ {0,”MESSAGE AUTHENTICATION CODE FIELD “, 8, 0, 0, 2, NULL,0},  
};  

3、变长,定长域说明  
如第二域:域名为主帐号,  
数据类型为string  
长度为22(是长长度不得超过此数)  
是个2位变长域  
由于是2位变长,在打包时需在数据域前加上数据的实际长度,如为19位,则表示为:  
19+数据值(即前两位为长度)  

如第三域:域名为处理码,  
数据类型为string  
长度为6  
是个定长域  
必须填满6位。  

附A:ISO8583各域段的说明  
1,信息类型(message type)定义  
位图位置:-  
格式:定长  
类型:N4  
描述:  
数据包的第一部分,定义数据包的类型。  
数据类型由数据包的发起者设定,应遵循以下要求:  
数据包开始部分必须是信息类型;  
对不支持的信息类型能给出拒绝应答。  
0100授权交易  
0110授权交易答复  
0200金融交易  
0210金融交易答复  
0240查询交易  
0250查询交易答复  
0400冲正交易  
0410冲正交易答复  
0800管理交易  
0810管理交易答复  

2,位图(Bit Map) – 基本位图和扩展位图  
位图位置:1  
格式:定长  
类型:B16  
描述:  
如将位图的第一位设为'1',表示使用扩展位图,否则表示只使用基本位图。  
如使用某数据域,应在位图中将相应的位设位'1',如使用41域,需将位图的41位设为'1'。  
选用条件:如使用65到128域,需设位图域为'1'  

3、Bit02主帐号(Primary Account Number)

位图位置:02  
格式:变长,LLVAR  
类型:N..22  
描述:  
唯一的确认一个用户交易的基本帐号。  
由于银行电子服务系统涉及多个应用系统,而帐号长度最多为22位,故将原标准的19长度改为22位。  

4、Bit03 处理代码 (Processing Code)  
位图位置:03  
格式:定长  
类型:N6  
描述:用于描述交易对客户帐户造成何种影响的代码。  
处理代码和信息码一起可唯一定义一种交易的类型。  
处理代码由以下三部分组成:  
位置描述  
1-2交易动作码  
3-4付出帐户类型,用于借记类,如查询、代收费、转场交易。  
5-6收入帐户类型,用于代收费、转帐等。  

其中:  
ff : 付出帐户  
tt: 收入帐户  
* 视主机而定  

5,Bit04 交易金额 (Amount, Transaction)  
位图位置:04  
格式:定长  
类型:N12  
描述:帐户人要求交易的交易金额,不含任何处理和交易费用。  
金额的表示和货币代码有关,应能表示相应货币的最小单位。参ISO4217有关货币代码定义。  
如“000000000100”用于表示美元,表示1.00元;如用于表示意大利货币,则表示100里拉。  
对于查询等交易,应设交易金额为“000000000000”。  

6,Bit06交易日期和时间(Transmission Date and Time)  
位图位置:07  
格式:定长,MMDDhhmmss  
类型:N10  
描述:本地交易日期和时间  

7,Bit11系统跟踪号(Systems Trace Audit Number)  
位图位置:11  
格式:定长  
类型:N6  
描述:终端交易的跟踪号码。  
交易发起终端填写,和“交易日期、时间”、信息类型等合在一起可唯一定义某一个终端的唯一一笔交易。即是说,在同一天,对一终端,同一类交易的系统跟踪号应保证不同。系统跟踪号在交易过程中不能修改。使用此域来匹配请求和通知类交易的返回。  
应用系统使用此域来检查收到的授权、金融、自动冲正、结算、管理和网管等类交易的应答包是否是其请求包的应答。  
系统跟踪号不用于匹配自动冲正交易,也不用于在预授权消费时匹配前面的预授权交易。参90域。  
对于银行电子服务系统,其系统跟踪号是交易流水号。  

8,Bit12本地交易时间(Time ,Local Transaction)  
位图位置:12  
格式:定长,hhmmss  
类型:N6  
描述:交易在终端上发生的时间。  
本地交易时间在交易处理过程中不能改变。在自动冲正,存贮转发时,本地交易时间不能改变。  

9,Bit13本地交易日期(Date ,Local Transaction)  
位图位置:13  
格式:定长,MMDD  
类型:N4  
描述:交易在终端上发生的时间。  
本地交易时间不能改变,在自动冲正、存储转发交易时,本地交易时间也不能改变。  

10,Bit14有效期(Date ,Expiration)  
位图位置:14  
格式:定长,YYMM  
类型:N4  
描述:卡的有效期,年年月月  
由于卡类写磁格式不同,收单行可能提不出卡的有效期,授权机构从卡的二磁道中提取卡的有效期。如卡无二磁道,收单行应要求手工录入卡的有效期。  
选用条件:100、200、400等交易如没有2、3磁道时,一定要有此域。  

11,Bit15结算日期(Date ,Settlement)  
位图位置:15  
格式:定长,MMDD  
类型:N4  
描述:  
银行电子服务系统和主机结算的时间,格式月月日日。  
结帐日期前发生的交易参加当天结算。  
在结算时,结帐日期也用于计算处理、交易费用。  

12,Bit17获取日期(Date ,Capture)  
位图位置:17  
格式:定长,MMDD  
类型:N4  
描述:从主机获取交易的记帐日期。通常用于主机和商户清算。  

13,Bit18商户类型(Merchant's Type)  
位图位置:18  
格式:定长  
类型:N4  
描述:定义商户产品和服务类型的代码  
商户类型用于金融、授权交易,用于指定服务点的类型。它主要有以下用途:  
决定预授权交易得到确认的最长时间;  
控制合法限额;  
为交易授权处理,控制网络操作规则;  
欺诈检测;  
用于商户分类报表;  
交易费用处理。  
根据ISO8583标准,应使用相应的国家标准。  
商户类型代码表如下:  
商户类型代码行业类型说明  
4215邮递服务  
4511民航  
4722旅游  
4782过桥费  
4789其他运输服务  
4614电信服务  
5542加油站  
5812餐馆  
5999购物  
6010金融机构-人工现金支付  
6011金融机构-自动现金支付  
6012金融机构-各类服务  
7011酒店、旅馆  
7299各类个人服务:洗衣、美容、  
7399各类商业服务:停车场、租车、广告、其他服务  
7699各类维修服务:维修、洗车、拖车  
7996娱乐:电影、剧院、体育、游戏  
8099医疗服务  
8111法律服务  
8999各类专业服务:会计、教育、装修、工程  

选用条件:服务点终端发起的交易一定要有此域。  

14,Bit22服务点输入方式(Point-of-Service Entry Mode)  
位图位置:22  
格式:定长  
类型:N3  
描述:在服务终端上定义PIN和PAN的输入方式。  
服务点输入方式包含以下两个方面组合而成:  
位置描述  
1-2在服务终端上PAN有效期输入方式  
3-3在服务终端上PIN的输入方式  
PAN的输入方式编码如下:  
PAN输入方式描述  
00不知  
01手工  
02读磁卡  
03条码扫描仪(BAR)  
04光学符号阅读器(OCR)  
05集成电路卡(IC卡)  

PIN的输入方式编码如下:  
PIN输入方式描述  
0不知  
1终端能接收PIN  
2终端不能接收PIN  

选用条件:服务点终端发起的交易一定要有此域。  

15,Bit25服务点类型代码(Point-of-Service Condition Code)  
位图位置:25  
格式:定长  
类型:N2  
描述:定义交易发生的服务点类型  
用法说明:下面是CYBERBANK支持的服务点条件代码。  
服务点条件代码服务点终端类型  
2自动柜员机(ATM)  
10银行终端(10)  
14POS  
20电话银行  

16,Bit32收单机构标识码(Acquirer institution Identification)  
位图位置:32  
格式:LLVAR  
类型:N..11  
描述:在金融交易中此域表示交易发生的银行机构的标识码  
应答数据包必须和请求数据包此域相同。  

17,Bit3向前机构标识码(Forwarding Institution Identification Code)  
位图位置:33  
格式:LLVAR  
类型:N..11  
描述:在金融交易中此域表示帐户所在的银行机构的标识码  
在网管交易800/810中,本域含有交易发起机构的代码。  
应答数据包必须和请求数据包此域相同。  

18,Bit35二磁道数据(Track 2 Data)  
位图位置:35  
格式:LLVAR  
类型:Z..37  
描述:写在卡二磁道的数据。数据组成遵循ISO7811-1985标准,数据中包含域分隔符,但不包含卡启始、结束符、LRC等。  
收卡行应检测卡的二磁道是否符合国际标准。  
为支持国际交换收单行应将二磁道中的分隔符换为“=”。除此外不能对二磁道数据进行任何修改,如修改PAN的校验字、有效期、服务码等。  

19,Bit36三磁道数据(Track 3 Data)  
位图位置:36  
格式:LLLVAR  
类型:Z…104  
描述:写在卡三磁道的数据。数据应组成遵循ISO4909标准,数据中包含域分隔符,但不包含卡启始、结束符、LRC等。  
注意:长度说明为3位数字长。  

20,Bit37检索索引号(Retrieval Reference Number)  
位图位置:37  
格式:定长  
类型:AN12  
描述:检索索引号用来在任何时间标识一个金融、授权、自动冲正交易。  
检索索引号不要求打印在持卡人的帐单上。它的主要目的是在收单行和授权行之间定义一个数据项用于跟踪和检索交易。授权机构可以将检索索引号打印在客户的对帐单上。  
检索索引号由收单行分配。  
选用条件:可包含在收单机构的交易请求中。如在交易请求中有,则应答数据中一定应原样返回。  

21,Bit38授权码(Authorization Identification)  
位图位置:38  
格式:定长  
类型:AN6  
描述:交易授权机构返回的返回代码。  
授权码用于在服务点终端上信用卡授权;  
授权机构按网络操作规定,可选使用本域。  

22,Bit39返回码(Response Code)  
位图位置:39  
格式:定长  
类型:AN2  
描述:对一交易定义其处理结果的编码。  
返回码用于说明授权机构对金融(授权)交易的处理状态;也用来指明自动冲正交易的冲正原因;还用来指出目标主机已接收到文件修改、结算、管理、网管等交易请求。  
返回码应尽可能准确,应尽可能描述清楚所遇到的问题和状态。网络交换主机、收单行主机有可能会按不同的返回码收取不同的交易处理费用,并执行不同的处理过程。  

23,Bit41收卡单位终端标识码(Card Acceptor Terminal Identification)  
位图位置:41  
格式:定长  
类型:ANS8  
描述:定义在收单单位中定义一个服务终端的标识码,在同一商户中服务终端标识码应唯一。  

24,Bit42收卡商户定义码(Card Acceptor Identification Code)  
位图位置:42  
格式:定长  
类型:ANS15  
描述:在本地和网络中定义交易单位(商户)的编码。  

25,Bit43收卡商户位置(Card Acceptor Location)  
位图位置:43  
格式:定长  
类型:ANS40  
描述:在本地和网络中定义收卡单位(商户)的国家、省。城市等。  
选用条件:如对外卡网络,一定要包含此域。  

26,Bit44附加返回数据(Additional ResponseData)  
位图位置:44  
格式:LLVAR  
类型:ANS..25  
描述:在金融(授权)交易中授权机构返回的其他信息。  

27,Bit48附加数据-私用(Additional Data-Private)  
位图位置:48  
格式:LLLVAR  
类型:ANS…999  
描述:银行电子服务系统使用此域作以下用途:  
存放批量查询的返回数据  
其格式与输出格式表对应  

28,Bit49交易货币代码(Currency Code,Transaction)  
位图位置:49  
格式:定长  
类型:AN3  
描述:按ISO4217定义的交易货币代码,用来表示“交易金额”(field04)所用的货币种类。  
交易货币代码是指在收单单位进行交易所用的交易种类。  

29,Bit50结算货币代码(Currency Code,Settlement)  
位图位置:50  
格式:定长  
类型:AN3  
描述:按ISO4217定义的结算货币代码,用来表示结算金额、结算处理费、结算交易费等所用的货币种类。  
结算货币代码是指在进行结算和清算过程中所用的货币种类。  

30,Bit52用户密码(PIN)数据(PIN Data)  
位图位置:52  
格式:定长  
类型:B16  
描述:用户在服务终端上交易用于识别用户合法性的一些数字。  
PIN在分行主机用分行主机密钥按ANSIX9.8标准加密,形成密文块。  
选用条件:如果在终端上输入了密码,就需要此域。  

31,Bit53密码相关控制信息(Security Related Control)  
位图位置:53  
格式:定长  
类型:AN16  
描述:本域提供有关密码块的附加信息,用于指出用于PIN计算的PIN key,用于MAC计算的MAC key。  
本域格式如下表所示:  
0-1格式代码2N“20”  
2-3PIN加密算法2N“01”:DES  
4-5密文块格式2N“01”:ANSI  
6PIN密钥索引1N‘1’或‘2’  
7MAC密钥索引1N‘1’或‘2’  
8-11MAC检查数据4B  
12-15填充4N  

在BOC信用卡网络中PIN和MAC各使用两个密钥—'1'号和'2'密钥,交易中计算PIN和MAC时只能各用某一个KEY,同时需将所用的KEY索引号填写此域。  
选用条件:如果有PIN域或MAC域,一定需有此域。  

32,Bit54附加金额(Additional Amounts)  
位图位置:54  
格式:LLLVAR  
类型:ANS…120  
描述:此域由授权行主机将客户的余额返回给收单终端,以显示或打印在客户回单上。  
在此域中最多可有6个余额返回,每个余额返回格式如下:  
位置描述  
0-1处理码3-4或5-6位定义的帐号类型  
2-3金额类型:01-帐户金额  
02-可用金额  
03-拥有金额  
04-应付金额  
40-可用取款限额  
56-可用转帐限额  
4-6金额的货币代码  
7‘D’-借记金额,’C’-贷记金额  
8-19余额数目  

六个余额中必须返回可用余额,在ATM、POS上显示可用余额  

33,Bit64信息确认码(MAC)  
位图位置:64  
格式:定长  
类型:B16  
描述:数据包的最后一个域,用于验证信息来源的合法性,以及数据包中数据是否未被篡改。  
MAC的计算参ANSIX.99,(最后八字节未满八位者左补零,右补零?)  
为提高效率,在发送者和接收者之间,只有以下一些重要的域参加MAC的计算。数据包中如果存在以下数据域,它们将参加MAC的计算。  

位图域名  
2基本帐号  
3处理代码  
4交易金额  
11系统跟踪号  
12本地交易时间  
13本地交易日期  
32收单机构代码  
38授权码  
39返回码  
41收单终端代码  
49交易货币代码  
95替换金额  
选用条件:只使用了1-64域的数据包使用此域。  

34,Bit70管理信息码(System Management Indormation Code)  
位图位置:70  
格式:定长  
类型:N3  
描述:  

用于定义和维护银行电子服务系统内部通讯网络状态和应用工作状态。  
网络管理信息代码用于管理清算日期”cutoff”,通讯”sign on/sign off”,”key exchange”等。  
支持以下一些网络管理信息码  
NMIC网络管理信息码动作  
001签到(Sign on)  
002签退(Sign off)  
101交换密钥(Key exchange)  
201结帐日期切换(Cutoff)  
202结帐日期切换完成  
301测试(Echo test)  

35,Bit74贷记交易笔数(Transaction Number)  
位图位置:74  
格式:定长  
类型:N10  
描述:贷记金融交易总的成功交易次数  
CYBERBANK软件在收到如下一个处理代码时会增加贷记交易次数。  
交易码交易服务  
00贷记,购物与服务  
01贷记,取现  
02贷记,调整(客户调整)  

36,Bit75贷记自动冲正交易笔数(Credits,Reversal Number)  
位图位置:75  
格式:定长  
类型:N10  
描述:贷记收单行自动冲正、“ChargeBack”等交易总的交易次数  
CYBERBANK软件在收到如下一个处理代码时会增加贷记自动冲正交易笔数  
交易码交易服务  
20贷记,退货  
21贷记,存款  
22贷记,调整(客户修改)  

37,Bit76借记交易笔数(Debits,Number)  
位图位置:76  
格式:定长  
类型:N10  
描述:借记金融交易总的成功交易次数  
CYBERBANK软件在收到如下一个处理代码时会增加借记交易次数。  
交易码交易服务  
00借记,购物与服务  
01借记,取现  
02借记,调整(客户调整)  

38,Bit77借记自动冲正交易笔数(Debits,Reversal Number)  
位图位置:77  
格式:定长  
类型:N10  
描述:借记收单行自动冲正、“ChargeBack”等交易总的交易次数  
CYBERBANK软件在收到如下一个处理代码时会增加借记重发交易次数,并在清算表报中反映。  
交易码交易服务  
20借记(!!!),退货  
21借记,存款  
22借记,调整(客户修改)  

39,Bit78转帐交易笔数(Transfers,Number)  
位图位置:78  
格式:定长  
类型:N10  
描述:转帐的交易总次数。  
系统在收到如下一个处理代码的金融交易时会增加转帐交易的次数。  
交易码交易服务  
40客户相关帐户间转帐  

40,Bit79转帐自动冲正交易笔数(Transfers,Reversal Number)  
位图位置:79  
格式:定长  
类型:N10  
描述:转帐的自动冲正交易总次数。  
系统在收到如下一个处理代码的自动冲正交易时会增加转帐自动冲正交易的次数。  
交易码交易服务  
40客户相关帐户间转帐  

41,Bit80查询交易笔数(Inquiries,Number)  
位图位置:80  
格式:定长  
类型:N10  
描述:成功的查询交易次数。  
系统软件在收到如下一个处理代码时会增加查询交易次数。  
交易码交易服务  
30查询可用金额  

42,Bit81授权交易笔数(Authorization,Number)  
位图位置:81  
格式:定长  
类型:N10  
描述:成功的授权交易总额  
在收到一个授权交易时系统将授权交易笔数加一。  

43,Bit83贷记交易费金额(Credits,Transaction FeeAmount)  
位图位置:83  
格式:定长  
类型:N12  
描述:净交易费用,如交易金额为正。  

44,Bit85借记交易费金额(Debits,Transaction FeeAmount)  
位图位置:85  
格式:定长  
类型:N12  
描述:净交易费用,如交易金额为负。  

45,Bit86贷记交易金额(Credits,Amount)  
位图位置:86  
格式:定长  
类型:N16  
描述:贷记金融交易总的交易金额,不含任何费用。  
系统在收到如下一个处理代码时会增加贷记交易金额,并在清算表报中反映。  
交易码交易服务  
20贷记,退货  
21贷记,存款  
22贷记,调整(客户修改)  

46,Bit87贷记自动冲正金额(Credits,Reversal Amount)  
位图位置:87  
格式:定长  
类型:N16  
描述:信用卡自动冲正交易的总金额,不含任何费用。  

47,Bit88借记交易金额(Debits,Amount)  
位图位置:88  
格式:定长  
类型:N16  
描述:借记金融交易总的交易金额,不含任何费用。  
系统在收到如下一个处理代码时会增加借记交易金额,并在清算表报中反映。  
交易码交易服务  
00借记,购物与服务  
01借记,取现  
02借记,调整(客户调整)  

48,Bit89借记自动冲正交易金额(Debits,Reversal Amount)  
位图位置:89  
格式:定长  
类型:N16  
描述:借记自动冲正交易的总金额,不含任何费用。  

49,Bit90原交易的数据元素(Original Data Elements)  
位图位置:90  
格式:定长  
类型:N42  
描述:存放原交易的一些数据,用于修改或自动冲正。  
数据由以下五部分组成:  
位置描述  
1-4信息类型码  
设为原交易的信息类型代码  
5-10系统跟踪号  
原交易系统跟踪号  
11-20交易日期和时间  
原交易的交易日期和时间  
21-31原收单机构  
原交易的收单机构  
不足11位的机构代码,左补‘0’  
32-42原向前机构  
原交易的收单机构  
不足11位的机构代码,左补‘0’  

50,Bit91文件修改编码(File Update Code)  
位图位置:91  
格式:定长  
类型:AN1  
描述:用此域指示某文件怎样维护。  
CYBERBANK支持以下一些修改代码:  
1增加记录  
2改变记录  
3删除记录  
5查询  
7增加文件  

选用条件:  

51,Bit94服务指示码(Service Indicator)  
位图位置:94  
格式:定长  
类型:AN7  
描述:指示文件修改服务。  

选用条件:  

52,Bit95代替金额(Replacement Amounts)  
位图位置:95  
格式:定长  
类型:N42!!!  
描述:客户修改或部分取消已完成的交易,最后实际发生的交易金额,  
交易的原交易金额存放在90域。  
本域由以下4部分组成  
Sub-ElementAmountAttribute  
交易实际金额N12  
结算实际金额N12  
实际交易费用X+N8  
实际结算费用X+N8  

53,Bit97净结算金额(Net Settlement Amount)  
位图位置:97  
格式:定长  
类型:X+N16  
描述:此域为净结帐金额。  
502交易中用于发送当天的净结算金额  
例:“C0000000020000000”,表示贷方('+'?)200000.00元。  
“D0000000020000000”,表示借方('-'?)200000.00元。  

54,Bit99结算机构码(Settlement Institution Identification)  
位图位置:99  
格式:LLVAR  
类型:N..11  
描述:此域存放接收清算信息的机构代码。  
返回数据包此域必须和请求数据包一致。  

55,Bit100接收机构码(Receiving Institution Identification)  
位图位置:100  
格式:LLVAR  
类型:N..11  
描述:金融交易此域存放授权机构代码。  
网管类交易,800/820交易,此域存放请求的目的机构代码。  
返回数据包此域必须和请求数据包一致。  

56,Bit101文件名(FileName)  
位图位置:101  
格式:LLVAR  
类型:ANS..17  
描述:发送机构设置的文件名。  

57,Bit102帐号1(Account Identification1)  
位图位置:102  
格式:LLVAR  
类型:ANS..28  
描述:一个特定的客户帐号。帐号1用来描述受借记、转出、支付等交易影响的帐户。  
选用条件:转帐时使用。  

58,Bit103帐号2(Account Identiication2)  
位图位置:103  
格式:LLVAR  
类型:ANS..28  
描述:交易的补充信息,如:第二货币号、利率代码、起止日期等。  
定义如下表  
0000000000000000000000000000000000000000000000000  
位置长度描述  
00-2122帐户  
22-276发卡机构号  

如果此域存在,将按此机构代码作为路由信息。  
选用条件:机构间转帐时使用。  

60,Bit123新密码数据(New PIN Data)  
位图位置:123  
格式:LLLVAR  
类型:B…16  
描述:修改密码交易时存放新密码。  
格式参考52域  
选用条件:修改密码交易时必须有此域。  

61,Bit128信息确认码(MAC)  
位图位置:128  
格式:定长  
类型:B16  
描述:数据包的最后一个域,用于验证信息来源的合法性,以及数据包中数据是否未被篡改。  
MAC的计算参ANSIX.99  
为提高效率,在发送者和接收者之间,只有以下一些重要的域参加MAC的计算。数据包中如果存在以下数据域,它们将参加MAC的计算。  

位图域名  
2基本帐号  
3处理代码  
4交易金额  
11系统跟踪号  
12本地交易时间  
13本地交易日期  
32收单机构代码  
38授权码  
39返回码  
41收单终端代码  
49交易货币代码  
95替换金额  

选用条件:使用65-128数据域的数据包需使用此域。  

字符/
意义:对于字符,通常表示按字面意义,指出接着的字符为特殊字符,不作解释。
例如:/b/匹配字符’b’,通过在b 前面加一个反斜杠,也就是/b/,则该字符变成特殊字符,表示
匹配一个单词的分界线。
或者:
对于几个字符,通常说明是特殊的,指出紧接着的字符不是特殊的,而应该按字面解释。
例如:*是一个特殊字符,匹配任意个字符(包括0个字符);例如:/a*/意味匹配0个或多个a。为了匹配字面上的*,在a前面加一个反斜杠;例如:/a*/匹配’a*’。

字符^
意义:表示匹配的字符必须在最前边。
例如:/^A/不匹配”an A,”中的’A’,但匹配”An A.”中最前面的’A’。

字符$
意义:与^类似,匹配最末的字符。
例如:/t$/不匹配”eater”中的’t’,但匹配”eat”中的’t’。

字符*
意义:匹配*前面的字符0次或n次。
例如:/bo*/匹配”A ghost booooed”中的’boooo’或”A bird warbled”中的’b’,但不匹配”Agoat g
runted”中的任何字符。

字符+
意义:匹配+号前面的字符1次或n次。等价于{1,}。
例如:/a+/匹配”candy”中的’a’和”caaaaaaandy.”中的所有’a’。

字符?
意义:匹配?前面的字符0次或1次。
例如:/e?le?/匹配”angel”中的’el’和”angle.”中的’le’。

字符.
意义:(小数点)匹配除换行符外的所有单个的字符。
例如:/.n/匹配”nay, an apple is on the tree”中的’an’和’on’,但不匹配’nay’。

字符(x)
意义:匹配’x’并记录匹配的值。
例如:/(foo)/匹配和记录”foo bar.”中的’foo’。匹配子串能被结果数组中的素[1], …,[n] 返
回,或被RegExp对象的属性, …, 返回。

字符x│y
意义:匹配’x’或者’y’。
例如:/green│red/匹配”green apple”中的’green’和”red apple.”中的’red’。

字符{ n }
意义:这里的n是一个正整数。匹配前面的n个字符。
例如:/a{ 2 }/不匹配”candy,”中的’a’,但匹配”caandy,” 中的所有’a’和”caaandy.”中前面的两个’a’。

字符{ n, }
意义:这里的n是一个正整数。匹配至少n个前面的字符。
例如:/a{ 2, }不匹配”candy”中的’a’,但匹配”caandy”中的所有’a’和”caaaaaaandy.”中的所有’a’

字符{ n,m }
意义:这里的n和m都是正整数。匹配至少n个最多m个前面的字符。
例如:/a{ 1,3 }/不匹配”cndy”中的任何字符,但匹配 “candy,”中的’a’,”caandy,” 中的前面两个
’a’和”caaaaaaandy”中前面的三个’a’,注意:即使”caaaaaaandy” 中有很多个’a’,但只匹配前面的三 个’a’即”aaa”。

字符[xyz]
意义:一字符列表,匹配列出中的任一字符。你可以通过连字符-指出一个字符范围。
例如:[abcd]跟[a-c]一样。它们匹配”brisket”中的’b’和”ache”中的’c’。

字符[^xyz]
意义:一字符补集,也就是说,它匹配除了列出的字符外的所有东西。 你可以使用连字符-指出一 字符范围。
例如:[^abc]和[^a-c]等价,它们最早匹配”brisket”中的’r’和”chop.”中的’h’。

字符
意义:匹配一个空格(不要与b混淆)

字符b
意义:匹配一个单词的分界线,比如一个空格(不要与混淆)
例如:/bnw/匹配”noonday”中的’no’,/wyb/匹配”possibly yesterday.”中的’ly’。

字符B
意义:匹配一个单词的非分界线
例如:/wBn/匹配”noonday”中的’on’,/yBw/匹配”possibly yesterday.”中的’ye’。

字符cX
意义:这里的X是一个控制字符。匹配一个字符串的控制字符。
例如:/cM/匹配一个字符串中的control-M。

字符d
意义:匹配一个数字,等价于[0-9]。
例如:/d/或/[0-9]/匹配”B2 is the suite number.”中的’2’。

字符D
意义:匹配任何的非数字,等价于[^0-9]。
例如:/D/或/[^0-9]/匹配”B2 is the suite number.”中的’B’。

字符f
意义:匹配一个表单符

字符n
意义:匹配一个换行符

字符r
意义:匹配一个回车符

字符s
意义:匹配一个单个white空格符,包括空格,tab,form feed,换行符,等价于[ fnrtv]。
例如:/sw*/匹配”foo bar.”中的’ bar’。

字符S
意义:匹配除white空格符以外的一个单个的字符,等价于[^ fnrtv]。
例如:/S/w*匹配”foo bar.”中的’foo’。

字符t
意义:匹配一个制表符

字符v
意义:匹配一个顶头制表符

字符w
意义:匹配所有的数字和字母以及下划线,等价于[A-Za-z0-9_]。
例如:/w/匹配”apple,”中的’a’,”.28,”中的’5’和”3D.”中的’3’。

字符W
意义:匹配除数字、字母外及下划线外的其它字符,等价于[^A-Za-z0-9_]。
例如:/W/或者/[^$A-Za-z0-9_]/匹配”50%.”中的’%’。

字符n
意义:这里的n是一个正整数。匹配一个正则表达式的最后一个子串的n的值(计数左圆括号)。

例如:/apple(,)sorange1/匹配”apple, orange, cherry, peach.”中的’apple, orange’,下面有一个更加完整的例子。
注意:如果左圆括号中的数字比n指定的数字还小,则n取下一行的八进制escape作为描述。

字符ooctal和xhex
意义:这里的ooctal是一个八进制的escape值,而xhex是一个十六进制的escape值,允许在一个正则表达式中嵌入ASCII码

下表是元字符及其在正则表达式上下文中的行为的一个完整列表:

字符 描述

\

将下一个字符标记为一个特殊字符、或一个原义字符、或一个后向引用、或一个八进制转义符。例如,’n’ 匹配字符 “n”。’\n’ 匹配一个换行符。序列 ‘\’ 匹配 “” 而 “\(” 则匹配 “(“。

^

匹配输入字符串的开始位置。如果设置了 RegExp 对象的 Multiline 属性,^ 也匹配 ‘\n’ 或 ‘\r’ 之后的位置。

$

匹配输入字符串的结束位置。如果设置了RegExp 对象的 Multiline 属性,$ 也匹配 ‘\n’ 或 ‘\r’ 之前的位置。

*

匹配前面的子表达式零次或多次。例如,zo* 能匹配 “z” 以及 “zoo”。 * 等价于{0,}。

+ 匹配前面的子表达式一次或多次。例如,’zo+’ 能匹配 “zo” 以及 “zoo”,但不能匹配 “z”。+ 等价于 {1,}。

?

匹配前面的子表达式零次或一次。例如,”do(es)?” 可以匹配 “do” 或 “does” 中的”do” 。? 等价于 {0,1}。

{n}

n 是一个非负整数。匹配确定的 n 次。例如,’o{2}’ 不能匹配 “Bob” 中的 ‘o’,但是能匹配 “food” 中的两个 o。

{n,}

n 是一个非负整数。至少匹配n 次。例如,’o{2,}’ 不能匹配 “Bob” 中的 ‘o’,但能匹配 “foooood” 中的所有 o。’o{1,}’ 等价于 ‘o+’。’o{0,}’ 则等价于 ‘o*’。

{n,m}

m 和 n 均为非负整数,其中n <= m。最少匹配 n 次且最多匹配 m 次。刘, “o{1,3}” 将匹配 “fooooood” 中的前三个 o。’o{0,1}’ 等价于 ‘o?’。请注意在逗号和两个数之间不能有空格。

?

当该字符紧跟在任何一个其他限制符 (*, +, ?, {n}, {n,}, {n,m}) 后面时,匹配模式是非贪婪的。非贪婪模式尽可能少的匹配所搜索的字符串,而默认的贪婪模式则尽可能多的匹配所搜索的字符串。例如,对于字符串 “oooo”,’o+?’ 将匹配单个 “o”,而 ‘o+’ 将匹配所有 ‘o’。

.

匹配除 “\n” 之外的任何单个字符。要匹配包括 ‘\n’ 在内的任何字符,请使用象 ‘[.\n]’ 的模式。

(pattern)

匹配pattern 并获取这一匹配。所获取的匹配可以从产生的 Matches 集合得到,在VBScript 中使用 SubMatches 集合,在JScript 中则使用 {CONTENT}… 属性。要匹配圆括号字符,请使用 ‘\(‘ 或 ‘\)’。

(?:pattern)

匹配 pattern 但不获取匹配结果,也就是说这是一个非获取匹配,不进行存储供以后使用。这在使用 “或” 字符 (|) 来组合一个模式的各个部分是很有用。例如, ‘industr(?:y|ies) 就是一个比 ‘industry|industries’ 更简略的表达式。

(?=pattern)

正向预查,在任何匹配 pattern 的字符串开始处匹配查找字符串。这是一个非获取匹配,也就是说,该匹配不需要获取供以后使用。例如, ‘Windows (?=95|98|NT|2000)’ 能匹配 “Windows 2000” 中的 “Windows” ,但不能匹配 “Windows 3.1” 中的 “Windows”。预查不消耗字符,也就是说,在一个匹配发生后,在最后一次匹配之后立即开始下一次匹配的搜索,而不是从包含预查的字符之后开始。

(?!pattern)

负向预查,在任何不匹配Negative lookahead matches the search string at any point where a string not matching pattern 的字符串开始处匹配查找字符串。这是一个非获取匹配,也就是说,该匹配不需要获取供以后使用。例如’Windows (?!95|98|NT|2000)’ 能匹配 “Windows 3.1” 中的 “Windows”,但不能匹配 “Windows 2000” 中的 “Windows”。预查不消耗字符,也就是说,在一个匹配发生后,在最后一次匹配之后立即开始下一次匹配的搜索,而不是从包含预查的字符之后开始

x|y

匹配 x 或 y。例如,’z|food’ 能匹配 “z” 或 “food”。'(z|f)ood’ 则匹配 “zood” 或 “food”。

[xyz]

字符集合。匹配所包含的任意一个字符。例如, ‘[abc]’ 可以匹配 “plain” 中的 ‘a’。

[^xyz]

负值字符集合。匹配未包含的任意字符。例如, ‘[^abc]’ 可以匹配 “plain” 中的’p’。

[a-z]

字符范围。匹配指定范围内的任意字符。例如,'[a-z]’ 可以匹配 ‘a’ 到 ‘z’ 范围内的任意小写字母字符。

[^a-z]

负值字符范围。匹配任何不在指定范围内的任意字符。例如,'[^a-z]’ 可以匹配任何不在 ‘a’ 到 ‘z’ 范围内的任意字符。

\b

匹配一个单词边界,也就是指单词和空格间的位置。例如, ‘er\b’ 可以匹配”never” 中的 ‘er’,但不能匹配 “verb” 中的 ‘er’。

\B

匹配非单词边界。’er\B’ 能匹配 “verb” 中的 ‘er’,但不能匹配 “never” 中的 ‘er’。

\cx

匹配由x指明的控制字符。例如, \cM 匹配一个 Control-M 或回车符。 x 的值必须为 A-Z 或 a-z 之一。否则,将 c 视为一个原义的 ‘c’ 字符。

\d

匹配一个数字字符。等价于 [0-9]。

\D

匹配一个非数字字符。等价于 [^0-9]。

\f

匹配一个换页符。等价于 \x0c 和 \cL。

\n

匹配一个换行符。等价于 \x0a 和 \cJ。

\r

匹配一个回车符。等价于 \x0d 和 \cM。

\s

匹配任何空白字符,包括空格、制表符、换页符等等。等价于 [ \f\n\r\t\v]。

\S

匹配任何非空白字符。等价于 [^ \f\n\r\t\v]。

\t

匹配一个制表符。等价于 \x09 和 \cI。

\v

匹配一个垂直制表符。等价于 \x0b 和 \cK。

\w

匹配包括下划线的任何单词字符。等价于'[A-Za-z0-9_]’。

\W

匹配任何非单词字符。等价于 ‘[^A-Za-z0-9_]’。

\xn

匹配 n,其中 n 为十六进制转义值。十六进制转义值必须为确定的两个数字长。例如, ‘\x41′ 匹配 “A”。’\x041’ 则等价于 ‘\x04’ & “1”。正则表达式中可以使用 ASCII 编码。.

\num

匹配 num,其中 num 是一个正整数。对所获取的匹配的引用。例如,'(.)’ 匹配两个连续的相同字符。

\n

标识一个八进制转义值或一个后向引用。如果 \n 之前至少 n 个获取的子表达式,则 n 为后向引用。否则,如果 n 为八进制数字 (0-7),则 n 为一个八进制转义值。

\nm

标识一个八进制转义值或一个后向引用。如果 \nm 之前至少有is preceded by at least nm 个获取得子表达式,则 nm 为后向引用。如果 \nm 之前至少有 n 个获取,则 n 为一个后跟文字 m 的后向引用。如果前面的条件都不满足,若  n 和 m 均为八进制数字 (0-7),则 \nm 将匹配八进制转义值 nm。

\nml

如果 n 为八进制数字 (0-3),且 m 和 l 均为八进制数字 (0-7),则匹配八进制转义值 nml。

\un

匹配 n,其中 n 是一个用四个十六进制数字表示的 Unicode 字符。例如,\u00A9 匹配版权符号 (?)。