*/

.hljs {
display: block;
overflow-x: auto;
padding: 0.5em;
background: #fdf6e3;
color: #657b83;
-webkit-text-size-adjust: none;
}

.hljs-comment,
.diff .hljs-header,
.hljs-doctype,
.hljs-pi,
.lisp .hljs-string {
color: #93a1a1;
}

/* Solarized Green */
.hljs-keyword,
.hljs-winutils,
.method,
.hljs-addition,
.css .hljs-tag,
.hljs-request,
.hljs-status,
.nginx .hljs-title {
color: #859900;
}

/* Solarized Cyan */
.hljs-number,
.hljs-command,
.hljs-string,
.hljs-tag .hljs-value,
.hljs-rule .hljs-value,
.hljs-doctag,
.tex .hljs-formula,
.hljs-regexp,
.hljs-hexcolor,
.hljs-link_url {
color: #2aa198;
}

/* Solarized Blue */
.hljs-title,
.hljs-localvars,
.hljs-chunk,
.hljs-decorator,
.hljs-built_in,
.hljs-identifier,
.vhdl .hljs-literal,
.hljs-id,
.css .hljs-function,
.hljs-name {
color: #268bd2;
}

/* Solarized Yellow */
.hljs-attribute,
.hljs-variable,
.lisp .hljs-body,
.smalltalk .hljs-number,
.hljs-constant,
.hljs-class .hljs-title,
.hljs-parent,
.hljs-type,
.hljs-link_reference {
color: #b58900;
}

/* Solarized Orange */
.hljs-preprocessor,
.hljs-preprocessor .hljs-keyword,
.hljs-pragma,
.hljs-shebang,
.hljs-symbol,
.hljs-symbol .hljs-string,
.diff .hljs-change,
.hljs-special,
.hljs-attr_selector,
.hljs-subst,
.hljs-cdata,
.css .hljs-pseudo,
.hljs-header {
color: #cb4b16;
}

/* Solarized Red */
.hljs-deletion,
.hljs-important {
color: #dc322f;
}

/* Solarized Violet */
.hljs-link_label {
color: #6c71c4;
}

.tex .hljs-formula {
background: #eee8d5;
}
-->

RegExp正则表达式规则以及常用正则表达式

简介

一个正则表达式就是一个模式与三个标志的组合体

三个标志

  • g :表示全局模式,即模式将被应用于所有字符串,而非在发现第一个匹配项时立即停止

  • i :表示不区分大小写模式,即在确定匹配项时忽略模式与字符串的大小写

  • m :表示多行模式,即在到达一行文本末尾时还会继续查找下一行中是否存在与模式匹配的项

检测函数

test()

作用:搜索字符串指定的值,根据结果并返回真或假,参数为需要检测的字符串

  1. var patt1=new RegExp("e");
  2. alert(patt1.test("The best things in life are free")); //true

注意:当使用构造函数创造正则对象时,需要常规的字符转义规则(在前面加反斜杠 \)

  1. var str = 'runoob';
  2. var patt1 = new RegExp('\\w', 'g'); // 有转义作为正则表达式处理
  3. var patt2 = new RegExp('\w', 'g'); // 无转义作为字符串处理
  4. var patt3 =/\w+/g; // 与 patt1 效果相同
  5. alert(patt1.test(str)) //输出 true
  6. alert(patt2.test(str)) //输出 false
  7. alert(patt3.test(str)) //输出 true

exec()

作用:检索字符串中的指定值。返回值是被找到的值。如果没有发现匹配,则返回 null

  1. var patt1=new RegExp("e");
  2. document.write(patt1.exec("The best things in life are free"));

常用正则表达式

一、校验数字的表达式

  1. 1 数字:^[0-9]*$
  2. 2 n位的数字:^\d{n}$
  3. 3 至少n位的数字:^\d{n,}$
  4. 4 m-n位的数字:^\d{m,n}$
  5. 5 零和非零开头的数字:^(0|[1-9][0-9]*)$
  6. 6 非零开头的最多带两位小数的数字:^([1-9][0-9]*)+(.[0-9]{1,2})?$
  7. 7 1-2位小数的正数或负数:^(\-)?\d+(\.\d{1,2})?$
  8. 8 正数、负数、和小数:^(\-|\+)?\d+(\.\d+)?$
  9. 9 有两位小数的正实数:^[0-9]+(.[0-9]{2})?$
  10. 10 1~3位小数的正实数:^[0-9]+(.[0-9]{1,3})?$
  11. 11 非零的正整数:^[1-9]\d*$ ^([1-9][0-9]*){1,3}$ ^\+?[1-9][0-9]*$
  12. 12 非零的负整数:^\-[1-9][]0-9"*$ 或 ^-[1-9]\d*$
  13. 13 非负整数:^\d+$ 或 ^[1-9]\d*|0$
  14. 14 非正整数:^-[1-9]\d*|0$ 或 ^((-\d+)|(0+))$
  15. 15 非负浮点数:^\d+(\.\d+)?$ 或 ^[1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0$
  16. 16 非正浮点数:^((-\d+(\.\d+)?)|(0+(\.0+)?))$ 或 ^(-([1-9]\d*\.\d*|0\.\d*[1-9]\d*))|0?\.0+|0$
  17. 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. 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. 19 浮点数:^(-?\d+)(\.\d+)?$ 或 ^-?([1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0)$

二、校验字符的表达式

  1. 1 汉字:^[\u4e00-\u9fa5]{0,}$
  2. 2 英文和数字:^[A-Za-z0-9]+$ ^[A-Za-z0-9]{4,40}$
  3. 3 长度为3-20的所有字符:^.{3,20}$
  4. 4 26个英文字母组成的字符串:^[A-Za-z]+$
  5. 5 26个大写英文字母组成的字符串:^[A-Z]+$
  6. 6 26个小写英文字母组成的字符串:^[a-z]+$
  7. 7 由数字和26个英文字母组成的字符串:^[A-Za-z0-9]+$
  8. 8 由数字、26个英文字母或者下划线组成的字符串:^\w+$ ^\w{3,20}$
  9. 9 中文、英文、数字包括下划线:^[\u4E00-\u9FA5A-Za-z0-9_]+$
  10. 10 中文、英文、数字但不包括下划线等符号:^[\u4E00-\u9FA5A-Za-z0-9]+$ ^[\u4E00-\u9FA5A-Za-z0-9]{2,20}$
  11. 11 可以输入含有^%&',;=?$\"等字符:[^%&',;=?$\x22]+
  12. 12 禁止输入含有~的字符:[^~\x22]+

三、特殊需求表达式

  1. 1 Email地址:^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$
  2. 2 域名:[a-zA-Z0-9][-a-zA-Z0-9]{0,62}(/.[a-zA-Z0-9][-a-zA-Z0-9]{0,62})+/.?
  3. 3 InternetURL:[a-zA-z]+://[^\s]* 或 ^http://([\w-]+\.)+[\w-]+(/[\w-./?%&=]*)?$
  4. 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. 5 电话号码("XXX-XXXXXXX""XXXX-XXXXXXXX""XXX-XXXXXXX""XXX-XXXXXXXX""XXXXXXX""XXXXXXXX):^(\(\d{3,4}-)|\d{3.4}-)?\d{7,8}$
  6. 6 国内电话号码(0511-4405222、021-87888822):\d{3}-\d{8}|\d{4}-\d{7}
  7. 7 身份证号(15位、18位数字):^\d{15}|\d{18}$
  8. 8 短身份证号码(数字、字母x结尾):^([0-9]){7,18}(x|X)?$ 或 ^\d{8,18}|[0-9x]{8,18}|[0-9X]{8,18}?$
  9. 9 帐号是否合法(字母开头,允许5-16字节,允许字母数字下划线):^[a-zA-Z][a-zA-Z0-9_]{4,15}$
  10. 10 密码(以字母开头,长度在6~18之间,只能包含字母、数字和下划线):^[a-zA-Z]\w{5,17}$
  11. 11 强密码(必须包含大小写字母和数字的组合,不能使用特殊字符,长度在8-10之间):^(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{8,10}$
  12. 12 日期格式:^\d{4}-\d{1,2}-\d{1,2}
  13. 13 一年的12个月(01~09和1~12):^(0?[1-9]|1[0-2])$
  14. 14 一个月的31天(01~09和1~31):^((0?[1-9])|((1|2)[0-9])|30|31)$
  15. 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. 16 xml文件:^([a-zA-Z]+-?)+[a-zA-Z0-9]+\\.[x|X][m|M][l|L]$
  26. 17 中文字符的正则表达式:[\u4e00-\u9fa5]
  27. 18 双字节字符:[^\x00-\xff] (包括汉字在内,可以用来计算字符串的长度(一个双字节字符长度计2,ASCII字符计1))
    19 空白行的正则表达式:\n\s*\r (可以用来删除空白行)
  28. 20 HTML标记的正则表达式:<(\S*?)[^>]*>.*?</\1>|<.*? /> (网上流传的版本太糟糕,上面这个也仅仅能部分,对于复杂的嵌套标记依旧无能为力)
    21 首尾空白字符的正则表达式:^\s*|\s*$或(^\s*)|(\s*$) (可以用来删除行首行尾的空白字符(包括空格、制表符、换页符等等),非常有用的表达式)
  29. 22 腾讯QQ号:[1-9][0-9]{4,} (腾讯QQ号从10000开始)
  30. 23 中国邮政编码:[1-9]\d{5}(?!\d) (中国邮政编码为6位数字)
  31. 24 IP地址:\d+\.\d+\.\d+\.\d+ (提取IP地址时有用)
    25 IP地址:((?:(?:25[0-5]|2[0-4]\\d|[01]?\\d?\\d)\\.){3}(?:25[0-5]|2[0-4]\\d|[01]?\\d?\\d))    (由@飞龙三少 提供,感谢共享)

正则表达式常用应用(未验证)

计算字符串的长度

说明:一个双字节字符长度计2,ASCII字符计1)

  1. String.prototype.len=function(){
  2. return this.replace([^x00-xff]/g,"aa").length;
  3. }

trim (去除首位空格)

说明:javascript中没有像vbscript那样的trim函数,我们就可以利用这个表达式来实现

  1. String.prototype.trim = function(){
  2. return this.replace(/(^s*)|(s*$)/g, "");
  3. }

分解和转换IP地址

说明:利用正则表达式分解和转换IP地址

  1. function IP2V(ip) //IP地址转换成对应数值
  2. {
  3. re = /(d+).(d+).(d+).(d+)/g //匹配IP地址的正则表达式
  4. if (re.test(ip)) {
  5. return RegExp.$1 * Math.pow(255, 3)) + RegExp.$2 * Math.pow(255, 2)) + RegExp.$3 * 255 + RegExp.$4 * 1
  6. } else {
  7. throw new Error("Not a valid IP address!")
  8. }
  9. }

从URL地址中提取文件名

  1. s="http://www.9499.net/page1.htm";
  2. s=s.replace(/(.*/){0,}([^.]+).*/ig,"$2") ; //Page1.htm

限制网页表单里的文本框输入内容

  1. //用正则表达式限制只能输入中文
  2. onkeyup="value="/blog/value.replace(/["^u4E00-u9FA5]/g,'') "
  3. onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^u4E00-u9FA5]/g,''))"
  4. //用正则表达式限制只能输入全角字符:
  5. onkeyup="value="/blog/value.replace(/["^uFF00-uFFFF]/g,'') " onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^uFF00-uFFFF]/g,''))"
  6. //用正则表达式限制只能输入数字:
  7. onkeyup="value="/blog/value.replace(/["^d]/g,'') "onbeforepaste= "clipboardData.setData('text',clipboardData.getData('text').replace(/[^d]/g,''))"
  8. //用正则表达式限制只能输入数字和英文:
  9. onkeyup="value="/blog/value.replace(/[W]/g,"'') "onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^d]/g,''

参考文件

  1. JavaScript RegExp 对象
  2. 最全的常用正则表达式大全——包括校验数字、字符、一些特殊的需求等等

RegExp正则表达式规则以及常用正则表达式的更多相关文章

  1. PHP正则表达式 - 附录(常用正则表达式)

    常用正则表达式附录I 平时做网站经常要用正则表达式,下面是一些讲解和例子,仅供大家参考和修改使用: "^\d+$" //非负整数(正整数 + 0) "^[0-9]*[1- ...

  2. JavaScript中正则表达式判断匹配规则以及常用的方法

    JavaScript中正则表达式判断匹配规则以及常用的方法: 字符串是编程时涉及到的最多的一种数据结构,对字符串进行操作的需求几乎无处不在. 正则表达式是一种用来匹配字符串的强有力的武器.它的设计思想 ...

  3. 常用正则表达式-copy

    匹配中文:[\u4e00-\u9fa5] 英文字母:[a-zA-Z] 数字:[0-9] 匹配中文,英文字母和数字及_: ^[\u4e00-\u9fa5_a-zA-Z0-9]+$ 同时判断输入长度:[\ ...

  4. js常用正则表达式2

    字符 含意 \ 做为转意,即通常在"\"后面的字符不按原来意义解释,如/b/匹配字符"b",当b前面加了反斜杆后/\b/,转意为匹配一个单词的边界. -或- 对 ...

  5. Javascript正则构造函数与正则表达字面量&&常用正则表达式

    本文不讨论正则表达式入门,即如何使用正则匹配.讨论的是两种创建正则表达式的优劣和一些细节,最后给出一些常用正则匹配表达式. Javascript中的正则表达式也是对象,我们可以使用两种方法创建正则表达 ...

  6. PHP常用正则表达式汇总 [复制链接]

    PHP常用正则表达式汇总 [复制链接] 上一主题下一主题   离线我是小猪头   法师     发帖 539 加关注 发消息 只看楼主 倒序阅读 使用道具楼主  发表于: 2011-06-22 更多 ...

  7. JavaScript常用正则表达式与应用(一)

    JavaScript的String类和RegExp对象类都定义了相关方法使用正则表达式进行模式匹配,本文将以连载方式介绍JavaScript常用正则表达式与相关应用,欢迎交流 本节是连载一,首先介绍J ...

  8. JS之路——常用正则表达式

    整数或者小数:^[0-9]+\.{0,1}[0-9]{0,2}$只能输入数字:"^[0-9]*$".只能输入n位的数字:"^\d{n}$".只能输入至少n位的数 ...

  9. Java基础知识强化71:正则表达式之基本规则 和 常用正则表达式

    1. 基本规则: A:字符 x 字符 x.举例:'a'表示字符a \\ 反斜线字符. \n 新行(换行)符 ('\u000A') \r 回车符 ('\u000D') B:字符类 [abc] a.b 或 ...

随机推荐

  1. phpExcel导出excel加超级链接的实例代码[转]

    phpexcel实现的导出excel文件的代码,且可以在excel文件中加入超级链接. 说明:PHPExcel的开发包Tests目录有详细使用实例.以下代码支持中文,注意文件编码,文件保存为utf-8 ...

  2. sql 查询 ORA-12170 TNS 连接超时特殊原因

    一般对于ORA-12170这个问题 1 看数据ip 是否能ping通 2 数据库服务是否启动 3 数据库服务所在服务器防火墙 然而当你能进去数据,而报这个这错时: 1 看代码中数据库连接是写错 2 如 ...

  3. cmd 指令

    dir  展示当前文件夹内的文件 mkdir 创建文件夹 c:  访问C盘 (d: f:) cd\ 返回主文件 cd .. 返回上一文件夹 cd test  打开文件夹 访问文件夹 rd 删除文件夹 ...

  4. Node.js之事件监听和发送

    演示事件的发送和监听 const events = require("events"); function Account() { this.balance = 0; events ...

  5. python---进程与线程

    进程和线程 什么是线程(thread)什么是进程 线程:操作系统能够进行运算调度的最小单位.它被包含在进程中,是进程中的实际运作单位.是一串指令的集合 一个线程指的是进程中一个单一顺序的控制流,一个进 ...

  6. 为mysql数据库建立索引

    前些时候,一位颇高级的程序员居然问我什么叫做索引,令我感到十分的惊奇,我想这绝不会是沧海一粟,因为有成千上万的开发者(可能大部分是使用MySQL的)都没有受过有关数据库的正规培训,尽管他们都为客户做过 ...

  7. java类路径classpath和包

    */ .hljs { display: block; overflow-x: auto; padding: 0.5em; color: #333; background: #f8f8f8; } .hl ...

  8. 【转】CentOS 6.3(x86_32)下安装Oracle 10g R2

    一.硬件要求 1.内存 & swap Minimum: 1 GB of RAMRecommended: 2 GB of RAM or more 检查内存情况 # grep MemTotal / ...

  9. Go语言入门——dep入门

    本文出现了大量maven的内容,更适合java程序员阅读,如果你的语言做依赖管理的方案与maven差异很大,可能在有些地方会不理解 从很久之前go语言在依赖解决和管理方面方案的匮乏就被不少人诟病.光指 ...

  10. 安装golang的mongodb驱动mgo速记

    这里介绍的方法只适用于Centos平台,测试版本为centos 6.5 下载源码安装实在麻烦,这里采用比较简单的方法给GO安装mongodb驱动 安装mgo之前,需要先安装bzr yum -y ins ...