不折腾,人努力,天帮忙

没有一定的增长,内卷就会不断加剧,机会就会不断减少,政府也没有力量提供更好的公共服务。所以不增长本身就是酝酿风险。

2008年,世界银行发布了由两位诺奖得主罗伯特·索洛和迈克尔·斯宾塞牵头的《增长报告——持续增长和包容性发展的战略》。报告研究了二战之后100多个国家和地区的经济增长记录,发现只有13个经济体实现了25年或更长时间每年平均达到7%或更高的增长率。7%的增速意味着,一个经济体的经济总量每10年翻一番(按不变价)。

  这13个经济体是:博茨瓦纳、巴西、中国大陆、中国台湾、中国香港、印度尼西亚、韩国、马来西亚、马耳他、阿曼、新加坡、泰国和日本。其共性有5条:对全球经济的开放融合、稳定的宏观经济形势、高水平的储蓄和投资、良好的市场激励机制、高效的政府。

过去几十年中国奇迹,是9个字,天帮忙,人努力,不折腾。

  现在我们依然寄望未来,不折腾,人努力,天帮忙。

一个通信行业15年员工随感

已成为一个管道,转型所弄的翼支付,和包,等都无水花,云计算也只是借资源,政策优势暂时的占有一定份额,长期看没有技术优势,可能被阿里云等蚕食,所谓的政企智慧城市等项目,只是一个竞标的,然后分包给华为等通信商承接,所图的只是专线用自己的。

ZG在TD-CDMA的建设中是交了很多钱的,这其中很大一部分是由运营商承担了。中国通信设备供应商的成功背后运营商是做了很大贡献的。

老通信人会回忆垄断时期,装一台电话几千还要和装机师傅打招呼的时期,

现在运营商基本上没有技术人员了,起码在各市公司层面,除了核心数据,传输机房还有几个技术人员,其它岗位都没有技术人员了,这种情况的一个原因是,2010年起把很多原来放市公司层面的168.114.10000等平台都集中到省中心统一管理了,原来的技术人员现在只能说是支撑人员了,就算最有要求的政企单位的支撑人员,也只是会配个交换机而已,原有的平台高层次技术人员不再被重视,被分流到营销,产品,策划等岗位 。

一线营销人员对升级套餐等存量运营是有很大看法的,觉得让用户多交了钱,这在其它行业比较少见,实际是管理上长期衔接不好,对存量政策设计不够好,另外有部分营销人员在业务压力下一线营销时对客户进行误导,甚至直接把业务说成免费等,让很多客户对一线人员的信用度普遍降低,进一步让营销人员在面对客户时不自信,对让用户多交钱的升级等有抵触情绪。

携号转网政策出来后,电信展现了自己的一线营销能力,携入和携出号码比达到了2:1以上,每个中等规模的市分公司平均每月净携入号码会有1000左右,但随着时间推移,净携入会减少。

一切以业务为导向,在市场片向上升的人和网运片向上升人的比例超过5:1

电信2015年左右开始在一线采用承包制,参照上一年度收入为R0基数,然后最小经营单元新的承包人参与竞聘,同时报出自己要增长的R1,R2值,当年底收入到R1,则R1-R0的部分拉出20%分给最小经营业单元的员工,如果达到R2值,则R2-R0的部分拉出25%分给最小经营单元的员工,一般小CEO(电信基层组织小组长,最小单元承包制的负责人)可以单独分到25%左右,

在打法上分局会重视加盟店,一般一个分局只有一个自营厅,其它都为加盟,常以新开店为工作的重点,会派一线员工到加盟店和店员一起组织活动,进行现场营销,比如一个城市分局一般管一个区,一个分局分成4个左右营业部,然后每个营业部有一个小CEO,一个渠道经理(店面陈设,培训,支撑等),三个网格经理(负责一个网格分区),

新到客户经理可能刚开始会想要好好服务客户,以服务为基础,但实际上,人的懒性和其它业务的压力,会让一线人员以业务为导向,有可能会带来业务的客户会加微信,而单纯的服务是很难有时间去做的。实际上在一线,特别是农村,当地的无学历的营销人员因为更用力的营销往往更能做到业务,而有学历的下放人员往往放不开,且并没有其它优势,所以业务反而难得以开展。

银行业下坡路到来

全世界最赚钱企业,中国的工商中建占了前五之四席,但以后中国银行业的日子将会不那么好过

1,中国债务规模已到一定高度,2022年5年就有下降趋势,

2,中国很大一部份企业的融资将从债权融资向股权融资转变(债权融资过段时间要还,股权融资都不用还),

3,原来一直吃利差的中国银行要脸对长期来看中国利率下午的趋势。

4、外国银行总一天会参与进来,

但这也许是银行做强自己,淘汰弱小的机会。

疫情中把政策发力点前移到个人和家庭

经济增长既要依靠要素投入和配置这个供给侧源泉,也要靠消费、投资和出口三驾马车从需求侧予以保驾护航。随着我国经济进入新的发展阶段,投资和出口因素对增长的拉动作用趋于减弱,转变发展方式的一项重要内容,就是转向更多依靠居民消费的拉动作用。然而,人口变化从三个方面产生抑制消费的效应,妨碍这个拉动力的提高。第一是人口总量效应。人口同时也是消费者,一旦人口达峰进而转入负增长,消费增长将受到极大的抑制。第二是年龄结构效应。老年人受收入和保障的限制,通常具有较低的消费能力和消费倾向,因此更深度的老龄化必然带来更严重的消费需求制约。第三是收入分配效应。由于高收入者的消费倾向低,低收入者的消费倾向高,因而过大的收入差距不利于消费扩大。因此,从人口变化趋势及其效应看,需求特别是消费需求已经成为经济增长的常态制约。

把政策发力点前移到个人和家庭,符合以人民为中心和民生为本这一根本发展目的要求,也契合疫情对经济和民生造成冲击的特点,切中(消费)需求成为经济增长常态制约这一现实挑战,可以实现保障民生与恢复经济良性循环两个目标的有效结合。根据普惠、通用、直接、便捷抵达家庭的原则,保消费主体的政策举措可包括:扩大失业保险和最低生活保障等社会保障项目的给付面,甚至应该把未参保和以前未覆盖的人群纳入其中;充分并适度地提高社会养老等基本社会保险的给付水平;提高社会保险可得性和领取方式的知情度;必要时直接向困难群体发放基本生活补贴;降低个人所得税和基本社会保险的缴费率。

中国的宏观杠杆率

一国的宏观杠杆率是指一国非金融实体部门债务规模占该国当年GDP的比率。非金融实体部门包括居民、非金融企业与政府三个部门。宏观杠杆率越高,意味着一国的总体债务水平越高。

  根据国家金融与发展实验室的数据,从1993年底到2021年底,中国的宏观杠杆率由107.8%上升至263.8%。不过,中国宏观杠杆率的快速攀升主要发生在2008年之后。1993年底至2008年底,该指标仅由107.8%上升至141.2%,年均上升2.1个百分点。而在2008年底至2021年底,该指标则由141.2%上升至263.8%,年均上升9.4个百分点。

  如果进行国际比较,在2021年底,中国的宏观杠杆率要显著高于新兴市场国家平均水平,几乎与美国以及发达国家平均水平持平,但显著低于日本。不过值得注意的是,2008年底至今,中国宏观杠杆率的上升速度却要显著超过美国、日本、发达国家平均水平以及新兴市场国家平均水平。

  仔细观察2008年底至今的中国宏观杠杆率走势,可以发现该指标也并非随着时间推移一直在上升。例如,在2017年下半年至2019年底之间,中国宏观杠杆率大致保持水平状态,这背后主要是中国政府的“去杠杆”政策发挥了作用。不过,受新冠疫情爆发影响,中国政府不得不实施扩张性宏观政策进行应对,导致宏观杠杆率在2020年由246.5%上升至270.1%。在2021年,随着扩张性宏观政策的边际收紧,中国宏观杠杆率则由270.1%下降至263.8%。

  分部门来看,截至2021年底,中国非金融企业债务、居民债务与政府债务各自占GDP的比率分别为154.8%、62.2%与47.2%。在政府债务中,中央政府债务与地方政府债务各自占GDP的比率分别为20.2%与26.6%。从数字上来看,中国非金融企业的债务负担是最重的,政府部门的债务负担是最轻的,居民部门的债务负担居中。

  从2008年底到2021年底,非金融企业部门债务占GDP的比率由95.2%上升至154.8%,年均上升4.6个百分点;居民部门债务占GDP的比率由17.9%上升至62.2%,年均上升3.4个百分点;政府部门债务占GDP的比率则由28.1%上升至46.8%,年均上升1.4个百分点。换言之,从增长速度来看,在2008年至2021年期间,增长最快的是非金融企业部门债务,其次是居民部门债务,最后是政府部门债务。

  然而,对政府部门债务的数据,我们要更加谨慎。上述官方数据至少遗漏了以下两个部分。第一,众所周知,地方政府投融资平台在过去一二十年间是地方政府融资的主要来源之一,但投融资平台债务却被计入了非金融企业部门债务。据笔者估算,地方政府投融资平台债务占GDP的比率约在40%左右。由于地方政府投融资平台债务与地方政府之间有着千丝万缕的联系,例如直接或间接的担保关系等,这部分债务的属性更像是地方政府债务。第二,最近一些年来,地方政府隐性债务增长迅速,而这部分债务不在上述官方债务数据之列。例如,根据IMF的估计,2021年底中国地方政府隐性债务占GDP的比重也在40%上下。

  如果我们把上述两部分地方政府债务考虑进来,并重新归类,那么截至2021年底,中国的宏观杠杆率大致为303.8%。其中非金融企业部门、居民部门与政府部门的杠杆率分别为114.8%、62.2%与127.2%。不难看出,经过上述调整之后,中国政府部门债务负担是最重的,之后分别是非金融企业部门与居民部门。而在政府部门中,中央政府债务占GDP仅为20.2%,地方政府债务占GDP比率高达106.6%。

  在经过上述调整后,再进行杠杆率的国际比较,我们可以发现:首先,中国的非金融企业部门杠杆率与新兴市场国家平均水平以及日本比较接近,显著高于发达国家平均水平和美国;其次,中国的居民部门杠杆率与日本比较接近,低于美国与发达国家平均水平,但高于新兴市场国家平均水平;再次,中国的政府部门杠杆率与发达国家平均水平以及美国比较接近,显著低于日本,但显著高于新兴市场国家平均水平;最后,在考虑了政府隐性债务之后,中国整体宏观杠杆率仍然显著低于日本,但略高于发达国家平均水平与美国,显著高于新兴市场国家平均水平。

  为什么我们要高度关注一国的宏观杠杆率的水平、变化与部门结构呢?这是因为,宏观杠杆率通常与一国的经济增长效率与金融市场风险高度相关。一方面,一国宏观杠杆率不断上升,意味着单位银行信贷对GDP的推动能力是在下降的;另一方面,宏观杠杆率的高企意味着债务违约风险处于较高水平,一旦利率水平在内外冲击下显著上升,那么一国就可能爆发部门债务违约甚至整体债务违约。例如,如果中国宏观杠杆率高达300%,假定这些银行信贷的利率全部是浮动利率,那么一旦长期基准利率上升一个百分点,那么中国需要多支付的利率水平就相当于GDP的3%。

  分部门来看,目前违约风险最高的是地方政府、其次是非金融企业、再次是居民、最后是中央政府。

  在1994年分税制后,地方政府长期以来处于财权与事权不匹配的状况,不得不靠以土地出让金为代表的预算外收入来平衡收支。在2008年全球金融危机爆发后,由于承担了要为地方基础设施建设融资的责任,地方政府债务不断攀升。2020年新冠疫情的爆发加剧了地方政府财政缺口,而房住不炒政策的实施则压低了地方政府土地出让金收入。因此,当前很多中西部地方政府的债务压力已经相当大,不少省份的债务率与负债率均超过了国家规定的警戒线。

  在非金融企业债务中,国企债务占据大部分份额。随着经济潜在增速的放缓、产业结构的调整、行业监管政策的实施以及新冠疫情的冲击,目前房地产开发商、部分地方国企(尤其是三四线城市平台公司)、中小民营企业均面临违约率快速上升的风险。

  居民债务攀升的背后是房地产的快速发展,因为居民举债的最重要原因是买房。随着房住不炒政策的实施,中心城市房价快速上涨的居民得到了控制。不过,受到新冠疫情的持续冲击,目前部分中国居民收入增速显著下降,这在未来可能引发大面积房贷违约,并造成风险的传递。

  作为宏观高杠杆硬币的另一面,是银行信贷资产的显著扩张。因此,无论是地方政府违约、非金融企业违约还是居民违约,都会造成商业银行不良资产的增长、利润率的下滑与资本金的萎缩。系统性的违约则可能引发系统性银行业危机。

  那么,中国政府应该如何应对由高宏观杠杆率可能引发的系统性金融风险呢?其一,中国政府应该继续保持较快的经济增长,通过增长来消化债务;其二,中国政府应该避免国内利率水平的快速上升,因为利率冲击可能导致高债务难以为继;其三,中国政府应该在银行危机到来之前提前敦促商业银行通过各种手段补充资本金与不良资产拨备;其四,如果银行业出现大量不良资产,则应该通过商业银行自身消化、通过市场化方式转让不良资产与中央政府注资“三管齐下”的方式进行应对;其五,透明、有序地实现大规模地方政府债务置换与债务重组;其六,进行财税体制改革,以缓解地方政府财权与事权的长期不匹配格局。

文章发表于2022.6.3,作者:张明

除权,填权

除权(exit right,XR)涉及两种情况,

一种是指股票的发行公司依一定比例分配股票给股东,作为股票股利,此时增加公司的总股数,派发股票股利的 , 举例如下:配股比率为25/1000,表示原持有1000股的股东,在除权后,股东持有股数会增加为1025股。此时,公司总股数则膨胀了2.5%。

还有一种是指股票的发行公司向股东配股。配股的意思即是公司向老股东发行股票。除了股票股利之外,发行公司也可分配“现金股利”给股东,此时则称为除息。(红利分为股票红利与现金红利,分配股票红利对应除权,分配现金红利对应除息。)

除权是由于公司股份数量增加,每股股票所代表的企业实际价值(每股净资产)有所减少,需要在发生该事实之后从股票市场价格中剔除这部分因素,而形成的剔除行为。

除权或除息的产生系因为投资人在除权或除息日之前与当天购买者,两者买到的是同一家公司的股票,但是内含的权益不同,显然相当不公平。因此,必须在除权或除息日当天向下调整股价,成为除权或除息参考价。

股权登记日,简单说就是,如果你在这个日期(含)之前买了这种股票,你就拥有公告里说的转增,配送股或者红利的权利。登记拥有这种权利的股东的名字。

除权日是,转增或者配送股以后市场可流通总股数增加,那么原来的市场价格必须进行除权。不然对后来买股票的人就不公平了。一样的总市值,股数增加了,价格却没降。

除权当日会在股票名前加XR为除权,XD为除息,DR为权息同除,除权日开盘价不一定等于除权价,除权价仅是一个参考价格,当实际开盘价高于这个价格,称为填权。

上市公司在分红后,都会将股价进行除权除息,除权除息后股票的价格就会下降。而填权的意思就是除权后的一段时间内,市场投资者持续看好买入该股,使股票的市场价格上涨到股票除权除息的基准价的上方。

比如说:某个公司分红前的股价为20元,公司采用10送10的分红方案,即每持有10股就能得到免费的10股红股。送股不需要出资认购,所以投资者的股票数量增加,但总资产不变。因此就会除权将股价降低,即除权基准价为10元,当股价大于10元就叫做填权;当股价再次上涨至20元以上就叫做填满权。贴权的意思就是指除权后股价跌至除权基准价的下方。

正则表达式疑点

.*和.*?区别

1. .*

. 表示匹配除换行符 \n 之外的任何单字符,*表示零次或多次。所以.*在一起就表示任意字符出现零次或多次。没有?表示贪婪模式。比如a.*b,它将会匹配最长的以a开始,以b结束的字符串。如果用它来搜索aabab的话,它会匹配整个字符串aabab。这被称为贪婪匹配。
又比如模式src=`.*`, 它将会匹配最长的以 src=` 开始,以`结束的最长的字符串。用它来搜索 <img src=“test.jpg` width=`60px` height=`80px`/> 时,将会返回 src=“test.jpg` width=`60px` height=`80px`

2. .*?

?跟在*或者+后边用时,表示懒惰模式。也称非贪婪模式。就是匹配尽可能少的字符。就意味着匹配任意数量的重复,但是在能使整个匹配成功的前提下使用最少的重复。
a.*?b匹配最短的,以a开始,以b结束的字符串。如果把它应用于aabab的话,它会匹配aab(第一到第三个字符)和ab(第四到第五个字符)。
又比如模式 src=`.*?`,它将会匹配 src=` 开始,以 ` 结束的尽可能短的字符串。且开始和结束中间可以没有字符,因为*表示零到多个。用它来搜索 <img src=``test.jpg` width=`60px` height=`80px`/> 时,将会返回 src=“

3. .+?

同上,?跟在*或者+后边用时,表示懒惰模式。也称非贪婪模式。就意味着匹配任意数量的重复,但是在能使整个匹配成功的前提下使用最少的重复。
a.+?b匹配最短的,以a开始,以b结束的字符串,但a和b中间至少要有一个字符。如果把它应用于ababccaab的话,它会匹配abab(第一到第四个字符)和aab(第七到第九个字符)。注意此时匹配结果不是ab,abaab。因为a和b中间至少要有一个字符。
又比如模式 src=`.+?`,它将会匹配 src=` 开始,以 ` 结束的尽可能短的字符串。且开始和结束中间必须有字符,因为+表示1到多个。用它来搜索 <img src=“test.jpg` width=`60px` height=`80px`/> 时,将会返回 src=“test.jpg`。注意与.*?时的区别,此时不会匹配src=“,因为src=` 和 ` 之间至少有一个字符。

常用正则表达式大全

一、校验数字的表达式

1. 数字:^[0-9]*$

2. n位的数字:^\d{n}$

3. 至少n位的数字:^\d{n,}$

4. m-n位的数字:^\d{m,n}$

5. 零和非零开头的数字:^(0|[1-9][0-9]*)$

6. 非零开头的最多带两位小数的数字:^([1-9][0-9]*)+(.[0-9]{1,2})?$

7. 带1-2位小数的正数或负数:^(\-)?\d+(\.\d{1,2})?$

8. 正数、负数、和小数:^(\-|\+)?\d+(\.\d+)?$

9. 有两位小数的正实数:^[0-9]+(.[0-9]{2})?$

10. 有1~3位小数的正实数:^[0-9]+(.[0-9]{1,3})?$

11. 非零的正整数:^[1-9]\d*$ 或 ^([1-9][0-9]*){1,3}$ 或 ^\+?[1-9][0-9]*$

12. 非零的负整数:^\-[1-9][]0-9″*$ 或 ^-[1-9]\d*$

13. 非负整数:^\d+$ 或 ^[1-9]\d*|0$

14. 非正整数:^-[1-9]\d*|0$ 或 ^((-\d+)|(0+))$

15. 非负浮点数:^\d+(\.\d+)?$ 或 ^[1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0$

16. 非正浮点数:^((-\d+(\.\d+)?)|(0+(\.0+)?))$ 或 ^(-([1-9]\d*\.\d*|0\.\d*[1-9]\d*))|0?\.0+|0$

17. 正浮点数:^[1-9]\d*\.\d*|0\.\d*[1-9]\d*$ 或 ^(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*))$

18. 负浮点数:^-([1-9]\d*\.\d*|0\.\d*[1-9]\d*)$ 或 ^(-(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*)))$

19. 浮点数:^(-?\d+)(\.\d+)?$ 或 ^-?([1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0)$

二、校验字符的表达式

1. 汉字:^[\u4e00-\u9fa5]{0,}$

2. 英文和数字:^[A-Za-z0-9]+$ 或 ^[A-Za-z0-9]{4,40}$

3. 长度为3-20的所有字符:^.{3,20}$

4. 由26个英文字母组成的字符串:^[A-Za-z]+$

5. 由26个大写英文字母组成的字符串:^[A-Z]+$

6. 由26个小写英文字母组成的字符串:^[a-z]+$

7. 由数字和26个英文字母组成的字符串:^[A-Za-z0-9]+$

8. 由数字、26个英文字母或者下划线组成的字符串:^\w+$ 或 ^\w{3,20}$

9. 中文、英文、数字包括下划线:^[\u4E00-\u9FA5A-Za-z0-9_]+$

10. 中文、英文、数字但不包括下划线等符号:^[\u4E00-\u9FA5A-Za-z0-9]+$ 或 ^[\u4E00-\u9FA5A-Za-z0-9]{2,20}$

11. 可以输入含有^%&’,;=?$\”等字符:[^%&’,;=?$\x22]+ 12 禁止输入含有~的字符:[^~\x22]+

其它:

.*匹配除 \n 以外的任何字符。

/[\u4E00-\u9FA5]/ 汉字

/[\uFF00-\uFFFF]/ 全角符号

/[\u0000-\u00FF]/ 半角符号

三、特殊需求表达式

1. Email地址:^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$

2. 域名:[a-zA-Z0-9][-a-zA-Z0-9]{0,62}(/.[a-zA-Z0-9][-a-zA-Z0-9]{0,62})+/.?

3. InternetURL:[a-zA-z]+://[^\s]* 或 ^http://([\w-]+\.)+[\w-]+(/[\w-./?%&=]*)?$

4. 手机号码:^(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}$

5. 电话号码(“XXX-XXXXXXX”、”XXXX-XXXXXXXX”、”XXX-XXXXXXX”、”XXX-XXXXXXXX”、”XXXXXXX”和”XXXXXXXX):^(\(\d{3,4}-)|\d{3.4}-)?\d{7,8}$

6. 国内电话号码(0511-4405222、021-87888822):\d{3}-\d{8}|\d{4}-\d{7}

7. 身份证号(15位、18位数字):^\d{15}|\d{18}$

8. 短身份证号码(数字、字母x结尾):^([0-9]){7,18}(x|X)?$ 或 ^\d{8,18}|[0-9x]{8,18}|[0-9X]{8,18}?$

9. 帐号是否合法(字母开头,允许5-16字节,允许字母数字下划线):^[a-zA-Z][a-zA-Z0-9_]{4,15}$

10. 密码(以字母开头,长度在6~18之间,只能包含字母、数字和下划线):^[a-zA-Z]\w{5,17}$

11. 强密码(必须包含大小写字母和数字的组合,不能使用特殊字符,长度在8-10之间):^(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{8,10}$

12. 日期格式:^\d{4}-\d{1,2}-\d{1,2}

13. 一年的12个月(01~09和1~12):^(0?[1-9]|1[0-2])$

14. 一个月的31天(01~09和1~31):^((0?[1-9])|((1|2)[0-9])|30|31)$

15. 钱的输入格式:

16. 1.有四种钱的表示形式我们可以接受:”10000.00″ 和 “10,000.00”, 和没有 “分” 的 “10000” 和 “10,000”:^[1-9][0-9]*$

17. 2.这表示任意一个不以0开头的数字,但是,这也意味着一个字符”0″不通过,所以我们采用下面的形式:^(0|[1-9][0-9]*)$

18. 3.一个0或者一个不以0开头的数字.我们还可以允许开头有一个负号:^(0|-?[1-9][0-9]*)$

19. 4.这表示一个0或者一个可能为负的开头不为0的数字.让用户以0开头好了.把负号的也去掉,因为钱总不能是负的吧.下面我们要加的是说明可能的小数部分:^[0-9]+(.[0-9]+)?$

20. 5.必须说明的是,小数点后面至少应该有1位数,所以”10.”是不通过的,但是 “10” 和 “10.2” 是通过的:^[0-9]+(.[0-9]{2})?$

21. 6.这样我们规定小数点后面必须有两位,如果你认为太苛刻了,可以这样:^[0-9]+(.[0-9]{1,2})?$

22. 7.这样就允许用户只写一位小数.下面我们该考虑数字中的逗号了,我们可以这样:^[0-9]{1,3}(,[0-9]{3})*(.[0-9]{1,2})?$

23 8.1到3个数字,后面跟着任意个 逗号+3个数字,逗号成为可选,而不是必须:^([0-9]+|[0-9]{1,3}(,[0-9]{3})*)(.[0-9]{1,2})?$

24. 备注:这就是最终结果了,别忘了”+”可以用”*”替代如果你觉得空字符串也可以接受的话(奇怪,为什么?)最后,别忘了在用函数时去掉去掉那个反斜杠,一般的错误都在这里

25. xml文件:^([a-zA-Z]+-?)+[a-zA-Z0-9]+\\.[x|X][m|M][l|L]$

26. 中文字符的正则表达式:[\u4e00-\u9fa5]

27. 双字节字符:[^\x00-\xff] (包括汉字在内,可以用来计算字符串的长度(一个双字节字符长度计2,ASCII字符计1))

28. 空白行的正则表达式:\n\s*\r (可以用来删除空白行)

29. HTML标记的正则表达式:<(\S*?)[^>]*>.*?</\1>|<.*? /> (网上流传的版本太糟糕,上面这个也仅仅能部分,对于复杂的嵌套标记依旧无能为力)

30. 首尾空白字符的正则表达式:^\s*|\s*$或(^\s*)|(\s*$) (可以用来删除行首行尾的空白字符(包括空格、制表符、换页符等等),非常有用的表达式)

31. 腾讯QQ号:[1-9][0-9]{4,} (腾讯QQ号从10000开始)

32. 中国邮政编码:[1-9]\d{5}(?!\d) (中国邮政编码为6位数字)

33. IP地址:\d+\.\d+\.\d+\.\d+ (提取IP地址时有用)

34. IP地址:((?:(?:25[0-5]|2[0-4]\\d|[01]?\\d?\\d)\\.){3}(?:25[0-5]|2[0-4]\\d|[01]?\\d?\\d))

35. IP-v4地址:\\b(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\b (提取IP地址时有用)
36. 校验IP-v6地址:(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))
37. 子网掩码:((?:(?:25[0-5]|2[0-4]\\d|[01]?\\d?\\d)\\.){3}(?:25[0-5]|2[0-4]\\d|[01]?\\d?\\d))
38. 校验日期:^(?:(?!0000)[0-9]{4}-(?:(?:0[1-9]|1[0-2])-(?:0[1-9]|1[0-9]|2[0-8])|(?:0[13-9]|1[0-2])-(?:29|30)|(?:0[13578]|1[02])-31)|(?:[0-9]{2}(?:0[48]|[2468][048]|[13579][26])|(?:0[48]|[2468][048]|[13579][26])00)-02-29)$(“yyyy-mm-dd“ 格式的日期校验,已考虑平闰年。)
39. 抽取注释:<!–(.*?)–>
40. 查找CSS属性:^\\s*[a-zA-Z\\-]+\\s*[:]{1}\\s[a-zA-Z0-9\\s.#]+[;]{1}
41. 提取页面超链接:(<a\\s*(?!.*\\brel=)[^>]*)(href=”https?:\\/\\/)((?!(?:(?:www\\.)?’.implode(‘|(?:www\\.)?’, $follow_list).’))[^” rel=”external nofollow” ]+)”((?!.*\\brel=)[^>]*)(?:[^>]*)>
42. 提取网页图片:\\< *[img][^\\\\>]*[src] *= *[\\”\\’]{0,1}([^\\”\\’\\ >]*)
43. 提取网页颜色代码:^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$
44. 文件扩展名效验:^([a-zA-Z]\\:|\\\\)\\\\([^\\\\]+\\\\)*[^\\/:*?”<>|]+\\.txt(l)?$
45. 判断IE版本:^.*MSIE [5-8](?:\\.[0-9]+)?(?!.*Trident\\/[5-9]\\.0).*$

元字符描述
\将下一个字符标记符、或一个向后引用、或一个八进制转义符。例如,“\\n”匹配\n。“\n”匹配换行符。序列“\\”匹配“\”而“\(”则匹配“(”。即相当于多种编程语言中都有的“转义字符”的概念。
^匹配输入字行首。如果设置了RegExp对象的Multiline属性,^也匹配“\n”或“\r”之后的位置。
$匹配输入行尾。如果设置了RegExp对象的Multiline属性,$也匹配“\n”或“\r”之前的位置。
*匹配前面的子表达式任意次。例如,zo*能匹配“z”,也能匹配“zo”以及“zoo”。*等价于{0,}。
+匹配前面的子表达式一次或多次(大于等于1次)。例如,“zo+”能匹配“zo”以及“zoo”,但不能匹配“z”。+等价于{1,}。
?匹配前面的子表达式零次或一次。例如,“do(es)?”可以匹配“do”或“does”。?等价于{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}mn均为非负整数,其中n<=m。最少匹配n次且最多匹配m次。例如,“o{1,3}”将匹配“fooooood”中的前三个o为一组,后三个o为一组。“o{0,1}”等价于“o?”。请注意在逗号和两个数之间不能有空格。
?当该字符紧跟在任何一个其他限制符(*,+,?,{n},{n,},{n,m})后面时,匹配模式是非贪婪的。非贪婪模式尽可能少地匹配所搜索的字符串,而默认的贪婪模式则尽可能多地匹配所搜索的字符串。例如,对于字符串“oooo”,“o+”将尽可能多地匹配“o”,得到结果[“oooo”],而“o+?”将尽可能少地匹配“o”,得到结果 [‘o’, ‘o’, ‘o’, ‘o’]
.点匹配除“\n”和”\r”之外的任何单个字符。要匹配包括“\n”和”\r”在内的任何字符,请使用像“[\s\S]”的模式。
(pattern)匹配pattern并获取这一匹配。所获取的匹配可以从产生的Matches集合得到,在VBScript中使用SubMatches集合,在JScript中则使用$0…$9属性。要匹配圆括号字符,请使用“”或“”或“”。
(?:pattern)非获取匹配,匹配pattern但不获取匹配结果,不进行存储供以后使用。这在使用或字符“(|)”来组合一个模式的各个部分时很有用。例如“industr(?:y|ies)”就是一个比“industry|industries”更简略的表达式。
(?=pattern)非获取匹配,正向肯定预查,在任何匹配pattern的字符串开始处匹配查找字符串,该匹配不需要获取供以后使用。例如,“Windows(?=95|98|NT|2000)”能匹配“Windows2000”中的“Windows”,但不能匹配“Windows3.1”中的“Windows”。预查不消耗字符,也就是说,在一个匹配发生后,在最后一次匹配之后立即开始下一次匹配的搜索,而不是从包含预查的字符之后开始。
(?!pattern)非获取匹配,正向否定预查,在任何不匹配pattern的字符串开始处匹配查找字符串,该匹配不需要获取供以后使用。例如“Windows(?!95|98|NT|2000)”能匹配“Windows3.1”中的“Windows”,但不能匹配“Windows2000”中的“Windows”。
(?<=pattern)非获取匹配,反向肯定预查,与正向肯定预查类似,只是方向相反。例如,“(?<=95|98|NT|2000)Windows”能匹配“2000Windows”中的“Windows”,但不能匹配“3.1Windows”中的“Windows”。*python的正则表达式没有完全按照正则表达式规范实现,所以一些高级特性建议使用其他语言如java、scala等
(?<!patte_n)非获取匹配,反向否定预查,与正向否定预查类似,只是方向相反。例如“(?<!95|98|NT|2000)Windows”能匹配“3.1Windows”中的“Windows”,但不能匹配“2000Windows”中的“Windows”。*python的正则表达式没有完全按照正则表达式规范实现,所以一些高级特性建议使用其他语言如java、scala等
x|y匹配x或y。例如,“z|food”能匹配“z”或“food”(此处请谨慎)。“[z|f]ood”则匹配“zood”或“food”。
[xyz]字符集合。匹配所包含的任意一个字符。例如,“[abc]”可以匹配“plain”中的“a”。
[^xyz]负值字符集合。匹配未包含的任意字符。例如,“[^abc]”可以匹配“plain”中的“plin”任一字符。
[a-z]字符范围。匹配指定范围内的任意字符。例如,“[a-z]”可以匹配“a”到“z”范围内的任意小写字母字符。注意:只有连字符在字符组内部时,并且出现在两个字符之间时,才能表示字符的范围; 如果出字符组的开头,则只能表示连字符本身.
[^a-z]负值字符范围。匹配任何不在指定范围内的任意字符。例如,“[^a-z]”可以匹配任何不在“a”到“z”范围内的任意字符。
\b匹配一个单词的边界,也就是指单词和空格间的位置(即正则表达式的“匹配”有两种概念,一种是匹配字符,一种是匹配位置,这里的\b就是匹配位置的)。例如,“er\b”可以匹配“never”中的“er”,但不能匹配“verb”中的“er”;“\b1_”可以匹配“1_23”中的“1_”,但不能匹配“21_3”中的“1_”。
\B匹配非单词边界。“er\B”能匹配“verb”中的“er”,但不能匹配“never”中的“er”。
\cx匹配由x指明的控制字符。例如,\cM匹配一个Control-M或回车符。x的值必须为A-Z或a-z之一。否则,将c视为一个原义的“c”字符。
\d匹配一个数字字符。等价于[0-9]。grep 要加上-P,perl正则支持
\D匹配一个非数字字符。等价于[^0-9]。grep要加上-P,perl正则支持
\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_]”,这里的”单词”字符使用Unicode字符集。
\W匹配任何非单词字符。等价于“[^A-Za-z0-9_]”。
\xn匹配n,其中n为十六进制转义值。十六进制转义值必须为确定的两个数字长。例如,“\x41”匹配“A”。“\x041”则等价于“\x04&1”。正则表达式中可以使用ASCII编码。
\num匹配num,其中num是一个正整数。对所获取的匹配的引用。例如,“(.)\1”匹配两个连续的相同字符。
\n标识一个八进制转义值或一个向后引用。如果\n之前至少n个获取的子表达式,则n为向后引用。否则,如果n为八进制数字(0-7),则n为一个八进制转义值。
\nm标识一个八进制转义值或一个向后引用。如果\nm之前至少有nm个获得子表达式,则nm为向后引用。如果\nm之前至少有n个获取,则n为一个后跟文字m的向后引用。如果前面的条件都不满足,若nm均为八进制数字(0-7),则\nm将匹配八进制转义值nm
\nml如果n为八进制数字(0-7),且ml均为八进制数字(0-7),则匹配八进制转义值nml
\un匹配n,其中n是一个用四个十六进制数字表示的Unicode字符。例如,\u00A9匹配版权符号(©)。
\p{P}小写 p 是 property 的意思,表示 Unicode 属性,用于 Unicode 正表达式的前缀。中括号内的“P”表示Unicode 字符集七个字符属性之一:标点字符。其他六个属性:L:字母;M:标记符号(一般不会单独出现);Z:分隔符(比如空格、换行等);S:符号(比如数学符号、货币符号等);N:数字(比如阿拉伯数字、罗马数字等);C:其他字符。*注:此语法部分语言不支持,例:javascript。
\<\>匹配词(word)的开始(\<)和结束(\>)。例如正则表达式\<the\>能够匹配字符串”for the wise”中的”the”,但是不能匹配字符串”otherwise”中的”the”。注意:这个元字符不是所有的软件都支持的。
( )将( 和 ) 之间的表达式定义为“组”(group),并且将匹配这个表达式的字符保存到一个临时区域(一个正则表达式中最多可以保存9个),它们可以用 \1 到\9 的符号来引用。
|将两个匹配条件进行逻辑“或”(or)运算。例如正则表达式(him|her) 匹配”it belongs to him”和”it belongs to her”,但是不能匹配”it belongs to them.”。注意:这个元字符不是所有的软件都支持的。

PS:

在线正则表达式测试: http://tool.oschina.net/regex/ 

正则表达式常用特殊字符和符号

常用特殊字符和符号

0.择一匹配         (|)

|  从多个模式中选择其一,类似于逻辑或,例如:

     正则表达式            匹配的字符串
     apple|orange    apple,orange
            cpp|java|python          cpp,java,python

1.任意匹配单个字符         (.)

. 匹配除了换行符\n以外的任意字符,例如:

     正则表达式            匹配的字符串
     a.c    a(任意字符)c
               ..             任意两个字符

2.从字符串开始或结尾或单词边界匹配(^)     ($)     (\b)       (\B)

^或\A接字符串,表示以该字符串开始(区别:^匹配一行的开始,\A匹配输入的开始)

$或\Z接字符串,表示以该字符串结尾(同上)

\b接字符串,表示以该字符串开始(区别于^和\A:匹配一个单词起始部分,不管该单词前面是否有任何字符。通俗来说:^匹配字符串的开始,\b匹配单词的开始)

\B接字符串,表示以该字符串为子串但不是边界

     正则表达式            匹配的字符串
     ^in      任何以in开头的字符串
               com$              任何以com结尾的字符串
                the     任何包含the的字符串
     \bthe      任何以the开始的字符串
     \bthe\b             单词zhe
     \Bthe             任何包含但不以the开始的字符串
     the\B             任何包含但不以the结尾的字符串

3.创建字符集,类似于择一匹配     ([])

([])用于匹配某些特定字符,区别于(.)匹配任意字符,匹配方括号中包含的任意字符。

     正则表达式            匹配的字符串
     c[abcd]d    cad,cbd,ccd,cdd
            [cp][jv][py]          cjp,pjp,cvp,cvy,pjp,pjy

4.限定范围或否定  (-)  ([^])

方括号中两个字符以-符号连接表示指定一个范围,在连接的字符之中。

方括号中紧紧连接^符号表示不匹配给定字符集任一字符

    正则表达式            匹配的字符串
    [a-c][d-f]    ad,ae,af,bd,be,bf,cd,ce,cf,
            [^aeiou]          一个非元音字符
           [^\t\n]           不匹配制表符或换行符

5.零次,一次或多次匹配(*)    (+)    (?)  ;频数匹配   {M}    {M,N}    {M,}

*将匹配其左边的正则表达式出现零次或多次的情况。

+将匹配其左边的正则表达式出现一次或多次的情况。

?将匹配其左边的正则表达式出现零次或一次的情况。

{M}将匹配其左边的正则表达式出现M次的情况。

{M,N}将匹配其左边的正则表达式出现M到N次的情况。

{M,}将匹配其左边的正则表达式出现M次或更多次的情况。

    正则表达式            匹配的字符串
    dog?    dog,do
           dog*           do,dog,dogg,doggg,….do任意个g
           dog+           dog,dogg,doggg,….dog任意个g
           dog{5}           doggggg
           dog{2,3}           dogg,doggg

 6.表示字符集的特殊字符   (\w)(\d)   (\s)

\w  匹配任何字母数字下划线字符

\d   匹配任何十进制数字

\s  匹配任意空格字符

    正则表达式            匹配的字符串
    \w+    一串由字母数字组成的字符串
           \d{3}-\d{3}-d{4}           美国电话号码形式,如800-555-1212
           \w+@\w+\.com          xxx@yyy.com形式的电子邮件地址
           \s          与[\n\r\t\v\f]相同,与\S相反