[原创]关于正则表达式

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

此处以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 对象方法

 

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

 

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

 

方法描述FFIE
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             验证姓名,可以是中文或英文

 

 

 

 

 

posted @ 2016-09-18 23:21  jason_zhangz  阅读(359)  评论(0编辑  收藏  举报