[原创]关于正则表达式

最近笔试,遇到是很多关于正则表达式的问题。于是乎,就把自己学习的结合网上知识,整理整理。

此处以javascript为例:

JavaScript RegExp 对象


RegExp 对象

正则表达式是描述字符模式的对象。

正则表达式用于对字符串模式匹配及检索替换,是对字符串执行模式匹配的强大工具。

语法

var patt=new RegExp(pattern,modifiers);

或者更简单的方式:

var patt=/pattern/modifiers;

  • pattern(模式) 描述了表达式的模式
  • modifiers(修饰符) 用于指定全局匹配、区分大小写的匹配和多行匹配

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

var re = new RegExp("\\w+");
var re = /\w+/

修饰符

修饰符用于执行区分大小写和全局匹配:

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

方括号

方括号用于查找某个范围内的字符:

表达式 描述
[abc] 查找方括号之间的任何字符。
[^abc] 查找任何不在方括号之间的字符。
[0-9] 查找任何从 0 至 9 的数字。
[a-z] 查找任何从小写 a 到小写 z 的字符。
[A-Z] 查找任何从大写 A 到大写 Z 的字符。
[A-z] 查找任何从大写 A 到小写 z 的字符。
[adgk] 查找给定集合内的任何字符。
[^adgk] 查找给定集合外的任何字符。
(red|blue|green) 查找任何指定的选项。

元字符

元字符(Metacharacter)是拥有特殊含义的字符:

元字符 描述
. 查找单个字符,除了换行和行结束符。
\w 查找单词字符。
\W 查找非单词字符。
\d 查找数字。
\D 查找非数字字符。
\s 查找空白字符。
\S 查找非空白字符。
\b 匹配单词边界。
\B 匹配非单词边界。
\0 查找 NUL 字符。
\n 查找换行符。
\f 查找换页符。
\r 查找回车符。
\t 查找制表符。
\v 查找垂直制表符。
\xxx 查找以八进制数 xxx 规定的字符。
\xdd 查找以十六进制数 dd 规定的字符。
\uxxxx 查找以十六进制数 xxxx 规定的 Unicode 字符。

量词

量词 描述
n+ 匹配任何包含至少一个 n 的字符串。
n* 匹配任何包含零个或多个 n 的字符串。
n? 匹配任何包含零个或一个 n 的字符串。
n{X} 匹配包含 X 个 n 的序列的字符串。
n{X,Y} 匹配包含 X 或 Y 个 n 的序列的字符串。
n{X,} 匹配包含至少 X 个 n 的序列的字符串。
n$ 匹配任何结尾为 n 的字符串。
^n 匹配任何开头为 n 的字符串。
?=n 匹配任何其后紧接指定字符串 n 的字符串。
?!n 匹配任何其后没有紧接指定字符串 n 的字符串。

RegExp 对象方法

方法 描述 FF IE
compile 编译正则表达式。 1 4
exec 检索字符串中指定的值。返回找到的值,并确定其位置。 1 4
test 检索字符串中指定的值。返回 true 或 false。 1 4

支持正则表达式的 String 对象的方法

方法 描述 FF IE
search 检索与正则表达式相匹配的值。 1 4
match 找到一个或多个正则表达式的匹配。 1 4
replace 替换与正则表达式匹配的子串。 1 4
split 把字符串分割为字符串数组。 1 4

常用的正则:

  1)/^\d{15}(\d{2}[A-Za-z0-9])?$/i  身份证

  2)/^((\(\d{2,3}\))|(\d{3}\-))?(\(0\d{2,3}\)|0\d{2,3}-)?[1-9]\d{6,7}(\-\d{1,4})?$/i  电话号码   如:020-88888888

  3)/^(13|15|18|17)\d{9}$/i 手机号码

 4)/^\d+(\.\d+)?$/i 验证整数或小数

  5)/^\d+(\.\d+)?$/i          验证货币

  6)/^[1-9]\d{4,9}$    验证QQ,从10000开始

  7)/^([+]?[0-9])|([-]?[0-9])+\d*$/i                                        验证整数 可正负数

  8) /^(?:[1-9][0-9]?|1[01][0-9]|120)$/i        验证年龄

  9)/^[\Α-\¥]+$/i 验证中文

  10)/^[A-Za-z]+$/i    验证英语

  11)/^[a-zA-Z][a-zA-Z0-9_]{5,15}$/i  验证用户名

  12)/^[1-9]\d{5}$/i  验证邮政编码

  13 ) /d+.d+.d+.d+/i验证IP地址     

  14)/^[\Α-\¥]+$/i.test(value) | /^\w+[\w\s]+\w+$/i             验证姓名,可以是中文或英文

时间: 2024-11-05 23:38:13

[原创]关于正则表达式的相关文章

(非原创)浅析正则表达式

浅析正则表达式-(原理篇) 前言: 其实这篇文章很久之前就应该发出来,由于种种原因没有发出来,如果这篇文章中有错误,还请大家指出,小弟并改正之,没有学不会的东西,只有不想学的东西,只要功夫深,铁杵磨成针,我的至理名言:吾生也有涯而知也无涯,以有涯随无涯,殆矣.我们只要坚持将其看完,相信大家的正则表达式会有一个提升空间!本文属于.NET正则表达式里面的内容,由于不同语言正则表达式有所不同. 首先先讲解下正则表达式的基础知识: 1.字符串的组成 对于字符串"123"而言,包括三个字符四个位

【爬虫】【原创】08 使用简单正则表达式爬取下厨房(早餐,午餐,晚餐)

目的 1)      提取下厨房关键词为(早餐,午餐,晚餐)的菜谱 2)      获取"菜谱链接,图片地址,菜名,材料,七天内多少人做过,作者",存储到MONGODB 3)      对每个菜谱进行网页截图,保存到本地 2.      目标站点分析 网址: http://www.xiachufang.com/ 输入关键词"早餐",发现是跳转链接(暂时没想到这种怎么处理比较好,就单独拿出来处理吧) 午餐和晚餐的网址就比较一致 3.      爬取思路(以午餐为例)

【原创】XAF属性身份证的正则表达式

XAF属性身份证的正则表达式 private string _identityid; [XafDisplayName("身份证号"), Size(40)] [ModelDefault("EditMaskType", "RegEx"), ModelDefault("EditMask", @"(\d{15})|(\d{17}([0-9]|X))"), ModelDefault("DisplayForm

java正则表达式验证非原创

1 /** 2 * 3 */ 4 package com.ssh.util; 5 6 import java.util.regex.Matcher; 7 import java.util.regex.Pattern; 8 9 /** 10 * @author leorain 11 * 12 */ 13 public class ValidateUtil { 14 /** 15 * 手机号验证 16 * 17 * @param str 18 * @return 验证通过返回true 19 */ 2

IOS中用正则表达式判断输入的内容为8-16位且同时包含数字和字母

今天在项目中需要用到判断用户输入的用户名长度为8-16位且同时包含数字和字母,在网上搜了一下正则表达式的用法,然后参考这篇blog,完美解答了问题.记录一下: 密码有如下要求:由数字和字母组成,并且要同时含有数字和字母,且长度要在8-16位之间. 如何分析需求?拆分!这就是软件设计的一般思路了.于是乎,拆分需求如下: 1,不能全部是数字 2,不能全部是字母 3,必须是数字或字母 只要能同时满足上面3个要求就可以了,写出来如下: 1 ^(?![0-9]+$)(?![a-zA-Z]+$)[0-9A-

Java正则表达式教程及示例

本文由 ImportNew - ImportNew读者 翻译自 journaldev.欢迎加入翻译小组.转载请见文末要求. [感谢 @CuGBabyBeaR  的热心翻译.如果其他朋友也有不错的原创或译文,可以尝试投递到 ImportNew.] 当我开始我的Java职业生涯的时候,对于我来说正则表达式简直是个是梦魇.本教程旨在帮助你驾驭Java正则表达式,同时也帮助我复习正则表达式. 什么是正则表达式? 正则表达式定义了字符串的模式.正则表达式可以用来搜索.编辑或处理文本.正则表达式并不仅限于某

刨根究底正则表达式之零——前言

前言 一.缘起 1. 前面在字符编码系列文章的前言中曾说过,类似于字符编码这样基础.重要.应用广泛而又特别容易让人困惑的主题还有字节序(即大小端表示).正则表达式以及浮点数实现.日期时间处理等等.其中,字节序.正则表达式跟字符编码的关系非常密切.字符编码以及字节序的问题已经在字符编码系列文章中介绍过了,这个系列再来讨论正则表达式. 不同于字符编码,正则表达式目前市面上并不缺乏专业著作,比如那本被誉为正则表达式学习圣经的<精通正则表达式>就很值得一读,另外该书的译者余晟先生所写的<正则指引

JavaScript中的正则表达式(终结篇)

JavaScript中的正则表达式(终结篇) 在之前的几篇文章中,我们了解了正则表达式的基本语法,但那些语法不是针对于某一个特定语言的.这篇博文我们将通过下面几个部分来了解正则表达式在JavaScript中的使用: JavaScript对正则表达式的支持程度 支持正则表达式的RegExp类型 RegExp的实例属性 RegExp的实例方法 RegExp的构造函数属性 简单的应用 第一部分:JavaScript对正则表达式的支持程度 之前我介绍了正则表达式的基本语法,如果大家不是很了解可以先看下面

深入入门正则表达式(java) - 命名捕获

深入入门正则表达式(java) - 引言 深入入门正则表达式(java) - 1 - 入门基础深入入门正则表达式(java) - 2 - 基本实例 深入入门正则表达式(java) - 3 - 正则在java中的使用 深入入门正则表达式(java) - 匹配原理 - 1 - 引擎分类与普适原则 深入入门正则表达式(java) - 匹配原理 - 2 - 回溯 深入入门正则表达式(java) - 命名捕获 很多正则引擎都支持命名分组,java是在java7中才引入这个特性,语法与.Net类似(.Net