门户网站开发过程视频,微信小商店怎么分销,淮北做网站公司,全国医院的网站建设正则表达式#xff0c;又称正规表示法、常规表示法#xff08;英语#xff1a;Regular Expression#xff0c;在代码中常简写为regex、regexp或RE#xff09;#xff0c;计算机科学的一个概念。正则表达式使用单个字符串来描述、匹配一系列符合某个句法规则的字符串。在很…
正则表达式又称正规表示法、常规表示法英语Regular Expression在代码中常简写为regex、regexp或RE计算机科学的一个概念。正则表达式使用单个字符串来描述、匹配一系列符合某个句法规则的字符串。在很多文本编辑器里正则表达式通常被用来检索、替换那些符合某个模式的文本。 一.正则表达式的用途
通过使用正则表达式可以 1.测试字符串内的模式。 例如可以测试输入字符串以查看字符串内是否出现电话号码模式或信用卡号码模式。这称为数据验证。 2.替换文本。 可以使用正则表达式来识别文档中的特定文本完全删除该文本或者用其他文本替换它。 3.基于模式匹配从字符串中提取子字符串。 可以查找文档内或输入域内特定的文本。 例如您可能需要搜索整个网站删除过时的材料以及替换某些 HTML 格式标记。在这种情况下可以使用正则表达式来确定在每个文件中是否出现该材料或该 HTML 格式标记。此过程将受影响的文件列表缩小到包含需要删除或更改的材料的那些文件。然后可以使用正则表达式来删除过时的材料。最后可以使用正则表达式来搜索和替换标记。 二.正则表达式语法
1.正则表达式是一种文本模式包括普通字符例如a 到 z 之间的字母和特殊字符称为“元字符”。模式描述在搜索文本时要匹配的一个或多个字符串。
表达式匹配/^\s*$/匹配空行。/\d{2}-\d{5}/验证由两位数字、一个连字符再加 5 位数字组成的 ID 号。/\s*(\S)(\s[^]*)?[\s\S]*\s*\/\1\s*/匹配 HTML 标记。
2.使用正则表达式
match把所有匹配的东西全都提取出来。
var str’abc 234 e45’;var re/\d/galert(str.match(re));//234,45或alert(str.match(/\d/g));//234,45
replace把所有匹配的东西全都替换掉。
var str’abc aaa erw’;var re/a/galert(str.replace(re,’0’));//0bc,000,erw
3.语法
字符说明常用的元字符.匹配除换行符以外的任意字符\w匹配字母或数字或下划线或汉字\s匹配任意的空白符\d匹配数字\b匹配单词的开始或结束^匹配输入字符串开始的位置。如果设置了 RegExp 对象的 Multiline 属性^ 还会与“\n”或“\r”之后的位置匹配。在[]中表示取反。$匹配输入字符串结尾的位置。如果设置了 RegExp 对象的 Multiline 属性$ 还会与“\n”或“\r”之前的位置匹配。常用的反义代码\W匹配任意不是字母数字下划线汉字的字符\S匹配任意不是空白符的字符\D匹配任意非数字的字符\B匹配不是单词开头或结束的位置[^x]匹配除了x以外的任意字符[^aeiou]匹配除了aeiou这几个字母以外的任意字符常用的限定符 * 零次或多次匹配前面的字符或子表达式。例如zo* 匹配“z”和“zoo”。* 等效于 {0,}。 一次或多次匹配前面的字符或子表达式。例如“zo”与“zo”和“zoo”匹配但与“z”不匹配。 等效于 {1,}。?零次或一次匹配前面的字符或子表达式。例如“do(es)?”匹配“do”或“does”中的“do”。? 等效于 {0,1}。{n}n 是非负整数。正好匹配 n 次。例如“o{2}”与“Bob”中的“o”不匹配但与“food”中的两个“o”匹配。{n,}n 是非负整数。至少匹配 n 次。例如“o{2,}”不匹配“Bob”中的“o”而匹配“foooood”中的所有 o。“o{1,}”等效于“o”。“o{0,}”等效于“o*”。{n,m}M 和 n 是非负整数其中 n m。匹配至少 n 次至多 m 次。例如“o{1,3}”匹配“fooooood”中的头三个 o。o{0,1} 等效于 o?。注意您不能将空格插入逗号和数字之间。懒惰限定符*?重复任意次但尽可能少重复?重复1次或更多次但尽可能少重复??重复0次或1次但尽可能少重复{n,m}?重复n到m次但尽可能少重复{n,}?重复n次以上但尽可能少重复分组( )用小括号来指定子表达式(也叫做分组)然后你就可以指定这个子表达式的重复次数了你也可以对子表达式进行其它一些操作. 字符类来描述一个正确的IP地址((2[0-4]\d|25[0-5]|[01]?\d\d?)\.){3}(2[0-4]\d|25[0-5]|[01]?\d\d?)常用分组语法(exp)匹配exp,并捕获文本到自动命名的组里(?nameexp)匹配exp,并捕获文本到名称为name的组里也可以写成(?nameexp)(?:exp)匹配exp,不捕获匹配的文本也不给此分组分配组号(?exp)匹配exp前面的位置(?exp)匹配exp后面的位置(?!exp)匹配后面跟的不是exp的位置(?!exp)匹配前面不是exp的位置(?#comment)这种类型的分组不对正则表达式的处理产生任何影响用于提供注释让人阅读常用的处理选项i匹配时不区分大小写。ggloble进行全局匹配指匹配到目标串的结尾m更改^和$的含义使它们分别在任意一行的行首和行尾匹配而不仅仅在整个字符串的开头和结尾匹配。(在此模式下,$的精确含意是:匹配\n之前的位置以及字符串结束前的位置.) 字符转义 \ 将下一字符标记为特殊字符、文本、反向引用或八进制转义符。例如“n”匹配字符“n”。“\n”匹配换行符。序列“\\”匹配“\”“\(”匹配“(”。 JS 中的特殊字符$、( )、*、、.、[ ]、?、\/、^、{ }、|若要匹配这些字符请使用 \限定。优先级顺序(从高到低)\转义符(), (?:), (?), []括号和中括号*, , ?, {n}, {n,}, {n,m}限定符^, $, \任何元字符、任何字符定位点和序列|替换其他(pattern)匹配 pattern 并捕获该匹配的子表达式。可以使用 $0…$9 属性从结果“匹配”集合中检索捕获的匹配。若要匹配括号字符 ( )请使用“\(”或者“\)”。(?:pattern)匹配 pattern 但不捕获该匹配的子表达式即它是一个非捕获匹配不存储供以后使用的匹配。这对于用“or”字符 (|) 组合模式部件的情况很有用。例如industr(?:y|ies) 是比 industry|industries 更经济的表达式。(?pattern)执行正向预测先行搜索的子表达式该表达式匹配处于匹配 pattern 的字符串的起始点的字符串。它是一个非捕获匹配即不能捕获供以后使用的匹配。例如Windows (?95|98|NT|2000) 匹配“Windows 2000”中的“Windows”但不匹配“Windows 3.1”中的“Windows”。预测先行不占用字符即发生匹配后下一匹配的搜索紧随上一匹配之后而不是在组成预测先行的字符后。(?!pattern)执行反向预测先行搜索的子表达式该表达式匹配不处于匹配 pattern 的字符串的起始点的搜索字符串。它是一个非捕获匹配即不能捕获供以后使用的匹配。例如Windows (?!95|98|NT|2000) 匹配“Windows 3.1”中的 “Windows”但不匹配“Windows 2000”中的“Windows”。预测先行不占用字符即发生匹配后下一匹配的搜索紧随上一匹配之后而不是在组成预测先行的字符后。x|y匹配 x 或 y。例如z|food 匹配“z”或“food”。(z|f)ood 匹配“zood”或“food”。[xyz]字符集。匹配包含的任一字符。例如“[abc]”匹配“plain”中的“a”。[^xyz]反向字符集。匹配未包含的任何字符。例如“[^abc]”匹配“plain”中的“p”。\cx匹配 x 指示的控制字符。例如\cM 匹配 Control-M 或回车符。x 的值必须在 A-Z 或 a-z 之间。如果不是这样则假定 c 就是“c”字符本身。\f换页符匹配。等效于 \x0c 和 \cL。\n换行符匹配。等效于 \x0a 和 \cJ。\r匹配一个回车符。等效于 \x0d 和 \cM。\t制表符匹配。与 \x09 和 \cI 等效。\v垂直制表符匹配。与 \x0b 和 \cK 等效。\xn匹配 n此处的 n 是一个十六进制转义码。十六进制转义码必须正好是两位数长。例如“\x41”匹配“A”。“\x041”与“\x04”“1”等效。允许在正则表达式中使用 ASCII 代码。\num匹配 num此处的 num 是一个正整数。到捕获匹配的反向引用。例如“(.)\1”匹配两个连续的相同字符。\n标识一个八进制转义码或反向引用。如果 \n 前面至少有 n 个捕获子表达式那么 n 是反向引用。否则如果 n 是八进制数 (0-7)那么 n 是八进制转义码。\nm标识一个八进制转义码或反向引用。如果 \nm 前面至少有 nm 个捕获子表达式那么 nm 是反向引用。如果 \nm 前面至少有 n 个捕获则 n 是反向引用后面跟有字符 m。如果两种前面的情况都不存在则 \nm 匹配八进制值 nm其中 n 和 m 是八进制数字 (0-7)。\nml当 n 是八进制数 (0-3)m 和 l 是八进制数 (0-7) 时匹配八进制转义码 nml。\un匹配 n其中 n 是以四位十六进制数表示的 Unicode 字符。例如\u00A9 匹配版权符号 (©)。 三.实例
正则表达式在线工具Regex Tester and Debugger Online - Javascript, PCRE, PHP http://www.txt2re.com/ 在线正则表达式测试
1.验证用户名和密码^[a-zA-Z]\w{5,15}$正确格式[A-Z][a-z]_[0-9]组成,并且第一个字必须为字母6~16位
2.验证电话号码^(\\d{3,4}-)\\d{7,8}$正确格式xxx/xxxx-xxxxxxx/xxxxxxxx
3.验证手机号码^1[3|4|5|7|8][0-9]\\d{8}$
4.验证身份证号15位或18位数字\\d{14}[[0-9],0-9xX]
5.验证Email地址(^\\w([-.]\\w)*\\w([-.]\\w)*\.\\w([-.]\\w)*$)
6.只能输入由数字和26个英文字母组成的字符串(^[A-Za-z0-9]$) ;
7.整数或者小数^[0-9]([.][0-9]){0,1}$
8.只能输入数字^[0-9]*$。
9.只能输入n位的数字^\\d{n}$。
10.只能输入至少n位的数字^\\d{n,}$。
11.只能输入m~n位的数字^\\d{m,n}$。
12.只能输入零和非零开头的数字^(0|[1-9][0-9]*)$。
13.只能输入有两位小数的正实数^[0-9](.[0-9]{2})?$。
14.只能输入有1~3位小数的正实数^[0-9](\.[0-9]{1,3})?$。
15.只能输入非零的正整数^\?[1-9][0-9]*$。
16.只能输入非零的负整数^\-[1-9][0-9]*$。
17.只能输入长度为3的字符^.{3}$。
18.只能输入由26个英文字母组成的字符串^[A-Za-z]$。
19.只能输入由26个大写英文字母组成的字符串^[A-Z]$。
20.只能输入由26个小写英文字母组成的字符串^[a-z]$。
21.验证是否含有^%,;?$\等字符[^%,;?$\x22]。
22.只能输入汉字^[\u4e00-\u9fa5]{0,}$。
23.验证URL^http://([\\w-]\.)[\\w-](/[\\w-./?%]*)?$。
24.验证一年的12个月^(0?[1-9]|1[0-2])$正确格式为0109和1012。
25.验证一个月的31天^((0?[1-9])|((1|2)[0-9])|30|31)$正确格式为0109、1029和“30”~“31”。
26.获取日期正则表达式\\d{4}[年|\-|\.]\\d{\1-\12}[月|\-|\.]\\d{\1-\31}日?
评注可用来匹配大多数年月日信息。
27.匹配双字节字符(包括汉字在内)[^\x00-\xff]
评注可以用来计算字符串的长度一个双字节字符长度计2ASCII字符计1
28.匹配空白行的正则表达式\n\s*\r
评注可以用来删除空白行
29.匹配HTML标记的正则表达式(\S*?)[^]*.*?/|.*? /
评注网上流传的版本太糟糕上面这个也仅仅能匹配部分对于复杂的嵌套标记依旧无能为力
30.匹配首尾空白字符的正则表达式^\s*|\s*$
评注可以用来删除行首行尾的空白字符(包括空格、制表符、换页符等等)非常有用的表达式
31.匹配网址URL的正则表达式[a-zA-z]://[^\s]*
评注网上流传的版本功能很有限上面这个基本可以满足需求
32.匹配帐号是否合法(字母开头允许5-16字节允许字母数字下划线)^[a-zA-Z][a-zA-Z0-9_]{4,15}$
评注表单验证时很实用
33.匹配腾讯QQ号[1-9][0-9]\{4,\}
评注腾讯QQ号从10 000 开始
34.匹配中国邮政编码[1-9]\\d{5}(?!\d)
评注中国邮政编码为6位数字
35.匹配ip地址([1-9]{1,3}\.){3}[1-9]。
评注提取ip地址时有用
36.匹配MAC地址([A-Fa-f0-9]{2}\:){5}[A-Fa-f0-9]