• 正则表达式定义

JavaScript中的正则表达式用RegExp 对象表示,可以使用RegExp ()构造函数来创建RegExp对象,不过RegExp 对象更多的是通过一种特殊的直接量愈发来创建。

例如:var pattern=/s$/;

参数 pattern 是一个字符串,指定了正则表达式的模式或其他正则表达式。

创建 RegExp 对象的语法:

new RegExp(pattern, attributes);

  • 正则表达式语法

Ø 直接量字符

在正则表达式中所以字母与数据都是按照字面含义进行匹配的。JavaScript正则表达式也支持非字母的字符匹配,这些字符需要通过反斜杠(\)作为前缀进行转义。

字符 匹配
字母和数字 自身
\o NUL字符
\t 制表符
\n 换行符
\v 垂直制表符
\f 换页符
\r 回车符
\xnn 由十六进制nn指定的拉丁字符
\uxxxx 由十六进制xxxx指定的Unicode字符
\cX 控制字符cX

特殊含义的标点符号,也需要\为前缀进行匹配:

^  $  .  *  +  ?  =  !  :  |  \   /  ( ) {  }   [  ]

Ø 字符类

正则表达式字符类

字符 匹配
[…] 方括号内的任意字符
[^…] 不方括号内的任意字符
. 除了换行符和其他Unicode行终止符之外的任意字符
\w 任何ASCII字符组成的单词,等价于[a-zA-Z0-9]
\W 任何不是ASCII字符组成的单词,等价于[^a-zA-Z0-9]
\s 任何Unicode字符空白符
\S 任何非Unicode字符空白符的字符,注意\S与\w不同
\d 任何ASCII数字,等价于[0-9]
\D 除了ASCII数字之外的任何字符,等价于[^0-9]
[\b] 退格直接量(特例)

Ø 重复

正则表达式的重复字符语法

字符 含义
{n,m} 匹配前一项至少n次,但是不超过m次
{n, } 匹配前一项n次或者多次
{n} 匹配前一项n次
? 匹配前一项0次或1次,等价于{0,1}
+ 匹配前一项至少1次或多次,等价于{1, }
* 匹配前一项至少0次或多次,等价于{0, }

注意:* 和 ?慎用,可能出现允许什么都不匹配。

(补充:非贪婪匹配:以上的重复,我们称之为贪婪匹配。非贪婪匹配即是在,待匹配的字符后跟随一个问号即可。“??”、“+?”、“{1,5}?”,?表达的是在匹配字符串时,匹配尽量更短的匹配。)

Ø 选择、分组和引用

()圆括号的作用:

1.把单独的项组合成子表达式,以便可以处理一个独立的单元那样使用 “|”、“*”、“+”或者“?”

例如:/(ab|cd)+|ef/ :表示可以匹配字符串“ef”,也可以匹配字符串“ab”或“cd”的一次或多次

2.在完整的模式中定义子模式

3.允许在同一正则表达式的后部引用前面的子表达式,通过在字符“\”加数字实现。

例如:/([‘ “][^’ “]*\1)/:\1匹配的是第一个带圆括号的子表达式所匹配的模式。在这样的表达式里,就可以是左侧的引号必须和右侧的引号相匹配。

不会出现单双引号串用。

正则表达式的选择、分组和引用字符

字符 含义
| 选择,匹配的是该符号左边的子表达式或右边的子表达式
(…) 组合,将几个项组合为一个单元,这个单元可通过“|”、“*”、“+”或者“?”等符号修饰,而且可以记住和这个组合匹配的字符串以供此后引用
(?:…) 只组合,把项目组合到一个单元,但不记忆与该组相匹配的字符
\n 和第n个分组第一次匹配的字符相匹配,组是圆括号的子表达式(也可以是嵌套的),组索引是从左到右的左括号数,(“?:”形式的分组不编码

Ø 指定匹配字符位置

正则表达式中的锚字符

字符 含义
^ 匹配字符串的开头,在多行检索中,匹配一行的开头
$ 匹配字符串的结尾,在多行检索中,匹配一行的结尾
\b 匹配一个单纯的编辑,简言之,就是位于字符\w和\W之间的位置,或位于字符\w和字符串的开头或者结尾之间的位置(单需注意,[\b]匹配的是退格符)
\B 匹配非单词边界的位置
(?=p) 零宽正向先行短语,要求接下来的字符都与P匹配,但不能包括匹配p的那些字符
(?!p) 零宽负向先行短语,要求接下来的字符不与P匹配

  • 修饰符
字符 含义
g 执行全局匹配(查找所有匹配而非在找到第一个匹配后停止)。
i 执行对大小写不敏感的匹配。
m 执行多行匹配

  • 常用的正则表达式(注意必须是英文状态下编写哦):

验证数字:^[0-9]*$

验证n位的数字:^\d{n}$

验证至少n位数字:^\d{n,}$

验证m-n位的数字:^\d{m,n}$

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

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

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

验证非零的正整数:^\+?[1-9][0-9]*$

验证非零的负整数:^\-[1-9][0-9]*$

验证非负整数(正整数 + 0):^\d+$

验证非正整数(负整数 + 0):^((-\d+)|(0+))$

验证长度为3的字符:^.{3}$

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

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

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

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

验证由数字、26个英文字母或者下划线组成的字符串:^\w+$

验证用户密码:^[a-zA-Z]\w{5,17}$

正确格式为:以字母开头,长度在6-18之间,只能包含字符、数字和下划线。

验证是否含有 ^%&',;=?$\" 等字符:[^%&',;=?$\x22]+

验证汉字:^([\u4e00-\u9fa5]{0,})$

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

验证InternetURL:

^http://([\w-]+\.)+[\w-]+(/[\w-./?%&=]*)?$ ;^[a-zA-z]+://(w+(-w+)*)(.(w+(-w+)*))*(?S*)?$

验证电话号码:

^(\(\d{3,4}\)|\d{3,4}-)?\d{7,8}$:--正确格式为:XXXX-XXXXXXX,XXXX-XXXXXXXX,XXX-XXXXXXX,XXX-XXXXXXXX,XXXXXXX,XXXXXXXX。

验证身份证号(15位或18位数字):^\d{15}|\d{18}$

验证一年的12个月:^(0?[1-9]|1[0-2])$ 正确格式为:“01”-“09”和“1”“12”

验证一个月的31天:^((0?[1-9])|((1|2)[0-9])|30|31)$ 正确格式为:01、09和1、31。

JS正则表达式简单总结的更多相关文章

  1. JS正则表达式 简单应用

    知识点: 先生成一个正则规则的对象,使用test()对传入的字符串进行验证,返回布尔类型 代码: <!doctype html><html><head> <m ...

  2. JS正则表达式常用总结

    正则表达式的创建 JS正则表达式的创建有两种方式: new RegExp() 和 直接字面量. //使用RegExp对象创建 var regObj = new RegExp("(^\\s+) ...

  3. Python之路-(js正则表达式、前端页面的模板套用、Django基础)

    js正则表达式 前端页面的模板套用 Django基础 js正则表达式: 1.定义正则表达式 /.../  用于定义正则表达式 /.../g 表示全局匹配 /.../i 表示不区分大小写 /.../m ...

  4. JS正则表达式大全

    转自:http://wenku.baidu.com/link?url=3y930kC7F6D3wQdMjQ3fVDmiA9Wfebs_QK0UB3N3mFaEoKg4ytZORPopxufeYA6si ...

  5. js正则表达式replace里有变量的解决方法用到RegExp类

    一直比较害怕使用正则表达式,貌似很深奥很复杂的样子,所以在用js操作字符串的时候,我最多使用的是replace.split.substring.indexOf等函数,这些函数有时候需要多次叠加使用,但 ...

  6. js正则表达式入门

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/ ...

  7. C# 使用js正则表达式,让文本框只能输入数字和字母,最大长度5位

    使用js正则表达式,让文本框只能输入数字和字母,最大长度5位,只需要加个onkeyup事件,即可简单实现 <asp:TextBox ID="txtBegin" runat=& ...

  8. JS 正则表达式用法

    JS 正则表达式用法简介 简单的说,正则表达式是一种可以用于模式匹配和替换的强有力的工具.其作用如下: 测试字符串的某个模式.例如,可以对一个输入字符串进行测试,看在该字符串是否存在一个电话号码模式或 ...

  9. 【正则】精通JS正则表达式,没消化 信息量太大,好文

    http://www.jb51.net/article/25313.htm 正则表达式可以: •测试字符串的某个模式.例如,可以对一个输入字符串进行测试,看在该字符串是否存在一个电话号码模式或一个信用 ...

随机推荐

  1. TL-WR703 USB不稳定/当前的总结

    http://see.sl088.com/wiki/WR703_USB%E4%B8%8D%E7%A8%B3%E5%AE%9A/%E5%BD%93%E5%89%8D%E7%9A%84%E6%80%BB% ...

  2. 不要滥用div,保持代码的整洁

    这篇文章算是很基础的了.旨在介绍如何保证页面代码的整洁.以维护性.使用有语义的页面标签,减少标签的滥用. 1. 移除不必要的<div>标签 嵌套在<form><ul> ...

  3. bzoj 2435: [Noi2011]道路修建 树上 dp

    2435: [Noi2011]道路修建 Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://www.lydsy.com/JudgeOnline/pr ...

  4. php实现工厂模式

    设计模式-使用php实现工厂方法模式 [概要] 创建型模式 定义一个用于创建对象的接口,让子类决定实例化哪一个类.Factory Method使用一个类的实例化延迟到其子类[GOF95] [结构图] ...

  5. cocos2d-x 2.2 移植wp8遇到的坑

    这两天正在将之前的一款cocos2d游戏,移植到wp平台上,这里记录一下所遇到的问题以及解决方法. 我是用的cocos2d下面的例子程序进行修改的. 遇到的第一个问题是资源路径的问题,当时我把解决方案 ...

  6. APP快速通过苹果AppStore审核九大诀窍

    [IT168技术]对于移动应用开发者来说, 最令人沮丧的可能莫过于辛辛苦苦开发的应用, 没能通过苹果AppStore的审核,或者在应用更新时遭遇下架.苹果的AppStore的审核流程和标准, 一向不透 ...

  7. Qt动画效果的实现,QPropertyAnimation

    Qt动画架构中的主要类如下图所示: 动画框架由基类QAbstractAnimation和它的两个儿子QVariantAnimation和QAnimationGroup组成.QAbstractAnima ...

  8. cocos2dx-lua使用UIListView制作二级折叠菜单

    折叠菜单,用过jquery accordion的同学都知道是啥玩艺儿~,图片效果就是介样: cocos2dx不带有此控件,因此我们动手来实现一个. 原理很简单,展开的时候往listview里inser ...

  9. .NET多线程执行函数

    前面几篇文章一直在写LINQ,这里为什么会出现多线程?原因是DebugLZQ在写一个LINQ综合Demo的时候遇到了多线程,便停下手来整理一下.关于多线程的文章,园子里很多很多,因此关于多线程理论性的 ...

  10. Java基础知识强化之IO流笔记74:NIO之 Buffer

    Java NIO中的Buffer用于和NIO通道进行交互.如你所知,数据是从通道读入缓冲区,从缓冲区写入到通道中的. 缓冲区本质上是一块可以写入数据,然后可以从中读取数据的内存.这块内存被包装成NIO ...