JS正则表达式简单总结
正则表达式定义
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正则表达式简单总结的更多相关文章
- JS正则表达式 简单应用
知识点: 先生成一个正则规则的对象,使用test()对传入的字符串进行验证,返回布尔类型 代码: <!doctype html><html><head> <m ...
- JS正则表达式常用总结
正则表达式的创建 JS正则表达式的创建有两种方式: new RegExp() 和 直接字面量. //使用RegExp对象创建 var regObj = new RegExp("(^\\s+) ...
- Python之路-(js正则表达式、前端页面的模板套用、Django基础)
js正则表达式 前端页面的模板套用 Django基础 js正则表达式: 1.定义正则表达式 /.../ 用于定义正则表达式 /.../g 表示全局匹配 /.../i 表示不区分大小写 /.../m ...
- JS正则表达式大全
转自:http://wenku.baidu.com/link?url=3y930kC7F6D3wQdMjQ3fVDmiA9Wfebs_QK0UB3N3mFaEoKg4ytZORPopxufeYA6si ...
- js正则表达式replace里有变量的解决方法用到RegExp类
一直比较害怕使用正则表达式,貌似很深奥很复杂的样子,所以在用js操作字符串的时候,我最多使用的是replace.split.substring.indexOf等函数,这些函数有时候需要多次叠加使用,但 ...
- js正则表达式入门
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/ ...
- C# 使用js正则表达式,让文本框只能输入数字和字母,最大长度5位
使用js正则表达式,让文本框只能输入数字和字母,最大长度5位,只需要加个onkeyup事件,即可简单实现 <asp:TextBox ID="txtBegin" runat=& ...
- JS 正则表达式用法
JS 正则表达式用法简介 简单的说,正则表达式是一种可以用于模式匹配和替换的强有力的工具.其作用如下: 测试字符串的某个模式.例如,可以对一个输入字符串进行测试,看在该字符串是否存在一个电话号码模式或 ...
- 【正则】精通JS正则表达式,没消化 信息量太大,好文
http://www.jb51.net/article/25313.htm 正则表达式可以: •测试字符串的某个模式.例如,可以对一个输入字符串进行测试,看在该字符串是否存在一个电话号码模式或一个信用 ...
随机推荐
- until与till的用法归纳
until与till的用法归纳 崔荣斌 until和till两者都可作介词.连词,一般情况下可以互换使用.用于肯定句时,主句的动词只用延续性的,它所表示的动作一直延续到till或until表示的时间为 ...
- VK Cup 2012 Qualification Round 2 C. String Manipulation 1.0 字符串模拟
C. String Manipulation 1.0 Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 codeforces.com/problemset/pr ...
- DataInputStream和DataOutputStream使用方法细节探讨
DataInputStream和DataOutputStream都是Java中输入输出流的装饰类,用起来非常方便.今天就来讨论一下使用该类时候遇到的编码问题. package com.vince ...
- [AngularJS] Best Practise - Module
Module definitions Angular modules can be declared in various ways, either stored in a variable or u ...
- 读取svg图片为UIBezierPath,开心做动画
动画预览 先扯淡 最近手痒又想整点动画玩玩,但是想了几个主意发现稍微复杂一点的手写都一定会累爆.这篇文章记录一下今天折腾的一个方案.说来简单,就是用矢量设计工具舒舒服服的做好设计,然后输出成 svg ...
- GXPT(一)——UI设计
通过长时间的积淀.TGB再次開始GXPT模式,JAVA版..NET版两条线同一时候进行. 纯面向对象的底层架构的搭建:easyUI+MVC的界面设计:工作流的再次雄起.云平台的构想:Confluenc ...
- VS2012无法安装cocos2d-x-2.1.4 解决方法及VS2012新建coco2d-x项目(一)
转自:http://www.cnblogs.com/wangpei/admin/EditPosts.aspx?opt=1 (注:此方法是可行,仅供参考,建议大家直接看我的 一见命令解决vs安装并创建c ...
- HTML5本地存储 localStorage
HTML5的本地存储是大势所趋,如果仅存储在内存中,则是sessionStorage,他们的语法都是一样,仅仅是一个存储在本地文件系统中,另一个存储在内存中(随着浏览器的关闭而消失),其语句如下: l ...
- InAction-根据LBS数据手机用户移动轨迹
看了以后学了不少通信运营商关于用户数据记录的知识啊. 本来想从网上找真实数据集的,但是网上的数据不合这个DEMO的场景要求,于是用作者提供的python脚本生成一定数据量的数据来实践(当然,这些数据结 ...
- 如何成为apple开发者???
苹果开发者帐号申请流程如下 http://www.360doc.com/content/13/1029/12/11029609_325024387.shtml 苹果开发者账号分为 个人(individ ...