正则表达式中括号的多义性
中括号在正则中称为字符组(Character class),有的书翻译为字符类,还有的翻译成字符集。我觉得字符组更好点,毕竟class在计算机属于中代表面向对象里的"类".顾名思义,字符组为一组字符,它表示在一个位置里可能出现的多种字符。注意这里强调只匹配一个位置哦。
简单字符组
范围字符组
组合字符组
排除型字符组
字符组运算
预定义字符组
一、简单字符组
示例1:[123] 可以分别匹配包含1-3这5个数的字符串。
var reg = /[123]/
reg.test('1') // -> true
reg.test('2') // -> true
reg.test('3') // -> true
reg.test('4') // -> false
reg.test('14') // -> true
reg.test('25') // -> true
reg.test('36') // -> true
示例2:匹配 bat、cat、fat.
var reg = /[bcf]at/
reg.test('bat') // -> true
reg.test('cat') // -> true
reg.test('fat') // -> true
二、范围字符组(Range class,与连字符 "-" 一起使用)
上面示例1中 [123] 可以匹配字符'1', '2', '3'.如果要匹配0-9可以写成 [0123456789],但有了范围字符组更简洁了,可以写成 /[0-9]/.
示例3:匹配数字
var reg = /[0-9]/
reg.test('0') // -> true
reg.test('1') // -> true
reg.test('2') // -> true
…
示例4:匹配HTML的标题标签
var reg = /<h[1-6]>/
reg.test('<h1>') // -> true
reg.test('<h2>') // -> true
reg.test('<h3>') // -> true
reg.test('<h4>') // -> true
reg.test('<h5>') // -> true
reg.test('<h6>') // -> true
reg.test('<h7>') // -> false
reg.test('<div>') // -> false
匹配小写英文字母可以用字符组 [a-z], 匹配大写英文字母用 [A-Z].这里最关键的是连字符 "-",不要理解为减号。 它的意义是"从什么到什么",如[a-z]理解为从 "a" 到 "z".
需要注意几点
1. 连字符(-)只在字符组内(中括号)才是元字符。如
var reg = /1-5/
reg.test('1') // -> true
reg.test('2') // -> false,不是连字符,不包含2,3,4
reg.test('-') // -> true, 这里 "-" 只是一个普通字符
2. 甚至在字符组内部,它也不一定是元字符。如
var reg1 = /[-123]/
var reg2 = /[123-]/
// 在字符组首部或尾部位置,仅作为一个普通字符,而不是表示范围的连字符
reg1.test('-') // -> true
reg2.test('-') // -> true
此外,很多元字符在字符组内都变成了普通字符,如(^$?)等。
中括号在正则中称为字符组(Character class),有的书翻译为字符类,还有的翻译成字符集。我觉得字符组更好点,毕竟class在计算机属于中代表面向对象里的"类".顾名思义,字符组为一组字符,它表示在一个位置里可能出现的多种字符。注意这里强调只匹配一个位置哦 www.jx-jf.com
简单字符组
范围字符组
组合字符组
排除型字符组
字符组运算
预定义字符组
一、简单字符组
示例1:[123] 可以分别匹配包含1-3这5个数的字符串。
var reg = /[123]/
reg.test('1') // -> true
reg.test('2') // -> true
reg.test('3') // -> true
reg.test('4') // -> false
reg.test('14') // -> true
reg.test('25') // -> true
reg.test('36') // -> true
示例2:匹配 bat、cat、fat.
var reg = /[bcf]at/
reg.test('bat') // -> true
reg.test('cat') // -> true
reg.test('fat') // -> true
二、范围字符组(Range class,与连字符 "-" 一起使用)
上面示例1中 [123] 可以匹配字符'1', '2', '3'.如果要匹配0-9可以写成 [0123456789],但有了范围字符组更简洁了,可以写成 /[0-9]/.
示例3:匹配数字
var reg = /[0-9]/
reg.test('0') // -> true
reg.test('1') // -> true
reg.test('2') // -> true
…
示例4:匹配HTML的标题标签
var reg = /<h[1-6]>/
reg.test('<h1>') // -> true
reg.test('<h2>') // -> true
reg.test('<h3>') // -> true
reg.test('<h4>') // -> true
reg.test('<h5>') // -> true
reg.test('<h6>') // -> true
reg.test('<h7>') // -> false
reg.test('<div>') // -> false
匹配小写英文字母可以用字符组 [a-z], 匹配大写英文字母用 [A-Z].这里最关键的是连字符 "-",不要理解为减号。 它的意义是"从什么到什么",如[a-z]理解为从 "a" 到 "z".
需要注意几点 www.lefeng123.com
1. 连字符(-)只在字符组内(中括号)才是元字符。如
var reg = /1-5/
reg.test('1') // -> true
reg.test('2') // -> false,不是连字符,不包含2,3,4
reg.test('-') // -> true, 这里 "-" 只是一个普通字符
2. 甚至在字符组内部,它也不一定是元字符。如
var reg1 = /[-123]/
var reg2 = /[123-]/
// 在字符组首部或尾部位置,仅作为一个普通字符,而不是表示范围的连字符
reg1.test('-') // -> true
reg2.test('-') // -> true
此外,很多元字符在字符组内都变成了普通字符,如(^$?)等。
转载于:https://www.cnblogs.com/tianchaoy/p/3670536.html
正则表达式中括号的多义性相关推荐
- php 正则表达式 中括号 转义符能转换一个字符串吗,转义字符,正则表达式,特殊字符,模式匹配...
1.常见的转义字符 字母前面加上反斜线 "\" 来表示常见的那些不能显示的ASCII字符.称为转义字符.如 \0, \t, \n 等. 转义字符 意义 ASCII码值(十进制) \ ...
- 正则表达式中括号的意义
今天在工作的时候,发现以前的代码存在问题,在用正则表达式匹配括号的时候出现了一些问题,然后就补了一下正则表达式相关方面的知识. 在网上查了相关的说明,发现小括号.中括号.大括号分别在正则表达式中代表不 ...
- java正则表达式 中括号_Java正则表达式获取中括号之间的内容
不包含中括号 正则表达式如下: \\[(.*?)] 注: .匹配除换行符\n之外的任何单字符: *匹配前面的子表达式零次或多次: ?匹配前面的子表达式零次或一次: ()标记一个子表达式的开始和结束位置 ...
- Javascript中括号“[]”的多义性
摘要:本文就是主要是分享JavaScript中括号的四种语义. Javascript中括号有四种语义 语义1,声明数组 var ary = []; // 声明一个空数组 var ary = [1,3] ...
- mysql正则表达式中括号单汉字_正则表达式中(括号) [方括号] {大括号}的区别
之前遇到要用正则判断输入字符串的小需求中遇到了问题,连续的字符串不知道怎么判断. 如邮箱结尾的.com .cn .net等. 于是乎查阅资料: 括号() : 括号是多个匹配,它把括号内的当做一组来处理 ...
- python正则表达式中括号的用法_Python的正则表达式中的圆括号到底如何使用?
这个问题并不太严重,严格来说我这样提问有些草率,不过也有人关注那我就把自己百度探究的结果写一写好了,有错误则请指出来. 首先是文档说明: >>> import re >> ...
- 正则表达式 中括号与加号
[ ] 匹配一个范围的字符 example:[0-9] + 匹配一个或多个 转载于:https://www.cnblogs.com/yugeng/p/7819204.html
- javascript 正则表达式详解
正则表达式中的特殊字符 字符 含意 \ 做为转意,即通常在"\"后面的字符不按原来意义解释,如/b/匹配字符"b",当b前面加了反斜杆后/\b/,转意为匹配一个 ...
- javascript的正则表达式
正则表达式中的特殊字符 字符 含意 \ 做为转意,即通常在"\"后面的字符不按原来意义解释,如/b/匹配字符"b",当b前面加了反斜杆后/\b/,转意为匹配一个 ...
最新文章
- python 比较运算符和逻辑运算符
- mysql 根据字段映射
- JAVA中Map集合的使用举例
- linux下电池测试软件,你们要的App电量分析测试来了
- c++ 私有内部类_Java内部类新解,你没有见过的船新版本
- 状态开关(ToggleButton)
- Java 自定义排序 Comparator
- LeetCode数据库 177. 第N高的薪水
- 删数问题(Noip1994)--贪心
- CentOS 7上升级openssh7.5
- xposed框架_无需Root使用Xposed框架、功能非常强大
- django+layui图片上传(用户头像修改,实时预览)
- YYLabel 自动布局 不换行 numberOfLines无效
- 微信小程序 - 开发者账号申请流程
- 10分钟教你生成超高逼格微信朋友圈
- 有没有python搜题_python搜题公众号
- 2021-10-21《能源与节能》能源环保省级期刊
- K210识别数字(0~9)并与单片机通信通过数字来控制小车移动
- iOS自动化测试(Appium+Robotframework )
- U盘UEFI引导OS内核的小白教程