27岁,山西运城人,职业电商经理人,前端开发工作者,从事过网站建设、网络推广、SEO、SEM、信息流推广、二类电商、网络运维、软件开发,等相关电商工作,经验较为丰富,小米技术社区致力于为广大从事Web前端开发的人员提供一些力所能及的引导和帮助 ...[更多]
E-mail:mzze@163.com
Q Q:32362389
W X:xiaomi168527
27岁,山西运城人,职业电商经理人,网络工程师兼运维,从事过运营商网络建设,企业网络建设、优化。数据中心网络维护等通过,经验丰富,座右铭:当自己休息的时候,别忘了别人还在奔跑。 ...[更多]
大于花一样的年龄,河南郑州是我家,2010年在北京接触团购网,2011年进入天猫淘宝一待就是四年,如今已经将设计走向国际化(ps:误打误撞开始进入阿里巴巴国际站的设计,嘿嘿)五年电商设计,丰富经验,从事过天猫淘宝阿里各项设计,店铺运营,产品拍摄;我将我的经历与您分享是我的快乐!座右铭:越努力越幸运! ...[更多]
E-mail:97157726@qq.com
Q Q:97157726
正则表达式中的字符包含两种:
元字符:一些具有特殊含义的特殊符号。
普通字符:包括所有大写和小写字母、所有数字、所有标点符号和一些其他符号。
其中元字符又包括限定符,等价符,定位符,修饰符,字符簇,转义字符等
使用正则表达式三步走
① 匹配符(查什么)(等价符、字符簇、修饰符、转义符)
② 限定符(查多少)
③ 定位符(从哪查)
限定符(量词)用来指定正则表达式的一个给定组件必须要出现多少次才能满足匹配。有 * 或 + 或 ? 或 {n} 或 {n,} 或 {n,m} 共6种。用法
var str = 'phpphp'; var res = str.match(/p+/g);//匹配所有的一个p或多个连在一起的p console.log(res);//["p", "pp", "p"]
相关阅读:限定符中的贪婪匹配和非贪婪匹配
贪婪限定符 | 惰性限定符 | 描述 |
---|---|---|
* | *? | 匹配零次或多次。 |
+ | +? | 匹配一次或多次。 |
? | ?? | 匹配零次或一次。 |
{ n } | { n }? | 恰好匹配 n 次。 |
{ n ,} | { n ,}? | 至少匹配 n 次。 |
{ n , m } | { n , m }? | 匹配 n 到 m 次 。 |
. | 匹配除换行符(\n、\r)之外的任何单个字符。要匹配包括 '\n' 在内的任何字符,请使用像"**(.\|\n)**"的模式。 |
\d | 匹配一个数字字符。等价于 [0-9]。 |
\D | 匹配一个非数字字符。等价于 [ ^0-9]。 |
\w | 匹配一个字母、数字、下划线。等价于[A-Za-z0-9_]。 |
\W | 匹配非(字母、数字、下划线)。等价于 [ ^A-Za-z0-9_]。 |
\s | 匹配任何空白字符,包括空格、制表符、换页符等等。等价于 [ \f\n\r\t\v]。 |
\S | 匹配任何非空白字符。等价于 [ ^ \f\n\r\t\v]。 |
\n | 匹配一个换行符。等价于 \x0a 和 \cJ。 |
\r | 匹配一个回车符。等价于 \x0d 和 \cM。 |
\t | 匹配一个制表符。等价于 \x09 和 \cI。 |
等价符demo:
常用的: . \d \w var str = 'php1js22'; var res = str.match(/\d+/g);//匹配所有的数字 console.log(res);//["1", "22"]
定位符用来描述字符串或单词的边界,^和 $分别指字符串的开始与结束,\b描述单词的前或后边界,\B 表示非单词边界。
^ | 匹配输入字符串开始的位置。如果设置了 RegExp 对象的 Multiline 属性,^ 还会与 \n 或 \r 之后的位置匹配。 | |
$ | 匹配输入字符串结尾的位置。如果设置了 RegExp 对象的 Multiline 属性,$ 还会与 \n 或 \r 之前的位置匹配。 | |
\b | 匹配一个单词边界,也就是指单词和空格间的位置。例如, 'er\b' 可以匹配"never" 中的 'er',但不能匹配 "verb" 中的 'er'。 | |
\B | 匹配非单词边界。'er\B' 能匹配 "verb" 中的 'er',但不能匹配 "never" 中的 'er'。 |
注意: 通常在表单数据验证时,严格检测字符串格式,需要使用^$
<script> var str = '1234'; var res = str.match(/^\d+$/);//匹配整个数字字符串(匹配id参数值) console.log(res);//["1234"] </script>
4.字符簇(方括号)
方括号表示一个范围,也称为**字符簇**,匹配满足条件的一个字符。
[xyz] | 字符集合。匹配所包含的任意一个字符。例如, [abc]可以匹配 "plain" 中的 'a'。 | ||||
[^xyz] | 负值字符集合。匹配未包含的任意字符。例如, [ ^abc] 可以匹配 "plain" 中的'p'、'l'、'i'、'n'。 | ||||
[a-z] | 字符范围。匹配指定范围内的任意字符。例如, [a-z] 可以匹配 'a' 到 'z' 范围内的任意小写字母字符。 | ||||
[^a-z] | 负值字符范围。匹配任何不在指定范围内的任意字符。例如,[ ^a-z]可以匹配任何不在 'a' 到 'z' 范围内的任意字符。 | ||||
x\|y | 或的用法:匹配 x 或 y。例如,'z\|food' 能匹配 "z" 或 "food"。'(z\|f)ood' 则匹配 "zood" 或 "food"。 |
字符范围 参考ASCII码表
示例:
[0-9] 查找任何从 0 至 9 的一个数字。
[a-z] 查找任何从小写 a 到小写 z 的字符。
[A-Z] 查找任何从大写 A 到大写 Z 的字符。
[A-z] 查找任何从大写 A 到小写 z 的字符。包括[ \ ]^_`等六个字符。
[A-Za-z]查找任何从大写 A 到小写 z 的字符,不包括[ \ ]^_`等六个字符。
字符簇demo:
var str = 'adcd1234ABCD'; var res = str.match(/[a-z]+/g);//匹配所有小写字母字符串 console.log(res);//["abcd"]
修饰符的用法,修饰符一定要写到正则表达式末尾/之后,可以一次性使用多个修饰符。
i 执行对大小写不敏感的匹配。实际上就是不区分大小写的匹配(默认区分大小写)
g 执行全局匹配(查找所有匹配而非在找到第一个匹配后停止)。
m 执行多行匹配(^和$能匹配每行的开始与结束)。
/i用法示例:
var str = 'adcd1234ABCD'; var res = str.match(/[a-z]+/gi);//匹配所有字母字符串(忽略大小写) console.log(res);//["adcd", "ABCD"]
/m用法示例
var str = '1234\r\n5678'; var res = str.match(/^\d+$/gm);//匹配整个数字字符串 console.log(res);//["1234", "5678"]
\ | 将下一个字符标记为一个特殊字符、或一个原义字符、或一个 向后引用、或一个八进制转义符。例如,'n' 匹配字符 "n"。'\n' 匹配一个换行符。序列 '\ \ ' 匹配 "\ " 而 "\ (" 则匹配 "("。 |
如果匹配的字符串在正则中有特殊含义的都必须加转义字符。如[]$.*?+|^{}()
但是不要乱加转义。
var str = 'php.php';//目标字符串中包含普通字符. var res = str.match(/p\.p/g);//匹配普通字符. 需要转义 console.log(res);//["p.p"]
匹配图片名称
var str = '123.jpg';//目标字符串中包含普通字符. var res = str.match(/.*\.jpg/g);//匹配jpg后缀的图片名称 console.log(res);//["123.jpg"]
本站内容均为小米原创,转载请注明出处:小米技术社区>> 正则表达式的元字符--包含限定符,等价符,定位符,修饰符,字符簇,转义字符的用法