中括号在正则中称为字符组(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

正则表达式中括号的多义性相关推荐

  1. php 正则表达式 中括号 转义符能转换一个字符串吗,转义字符,正则表达式,特殊字符,模式匹配...

    1.常见的转义字符 字母前面加上反斜线 "\" 来表示常见的那些不能显示的ASCII字符.称为转义字符.如 \0, \t, \n 等. 转义字符 意义 ASCII码值(十进制) \ ...

  2. 正则表达式中括号的意义

    今天在工作的时候,发现以前的代码存在问题,在用正则表达式匹配括号的时候出现了一些问题,然后就补了一下正则表达式相关方面的知识. 在网上查了相关的说明,发现小括号.中括号.大括号分别在正则表达式中代表不 ...

  3. java正则表达式 中括号_Java正则表达式获取中括号之间的内容

    不包含中括号 正则表达式如下: \\[(.*?)] 注: .匹配除换行符\n之外的任何单字符: *匹配前面的子表达式零次或多次: ?匹配前面的子表达式零次或一次: ()标记一个子表达式的开始和结束位置 ...

  4. Javascript中括号“[]”的多义性

    摘要:本文就是主要是分享JavaScript中括号的四种语义. Javascript中括号有四种语义 语义1,声明数组 var ary = []; // 声明一个空数组 var ary = [1,3] ...

  5. mysql正则表达式中括号单汉字_正则表达式中(括号) [方括号] {大括号}的区别

    之前遇到要用正则判断输入字符串的小需求中遇到了问题,连续的字符串不知道怎么判断. 如邮箱结尾的.com .cn .net等. 于是乎查阅资料: 括号() : 括号是多个匹配,它把括号内的当做一组来处理 ...

  6. python正则表达式中括号的用法_Python的正则表达式中的圆括号到底如何使用?

    这个问题并不太严重,严格来说我这样提问有些草率,不过也有人关注那我就把自己百度探究的结果写一写好了,有错误则请指出来. 首先是文档说明: >>> import re >> ...

  7. 正则表达式 中括号与加号

    [ ] 匹配一个范围的字符 example:[0-9] + 匹配一个或多个 转载于:https://www.cnblogs.com/yugeng/p/7819204.html

  8. javascript 正则表达式详解

    正则表达式中的特殊字符 字符 含意 \ 做为转意,即通常在"\"后面的字符不按原来意义解释,如/b/匹配字符"b",当b前面加了反斜杆后/\b/,转意为匹配一个 ...

  9. javascript的正则表达式

    正则表达式中的特殊字符 字符 含意 \ 做为转意,即通常在"\"后面的字符不按原来意义解释,如/b/匹配字符"b",当b前面加了反斜杆后/\b/,转意为匹配一个 ...

最新文章

  1. python 比较运算符和逻辑运算符
  2. mysql 根据字段映射
  3. JAVA中Map集合的使用举例
  4. linux下电池测试软件,你们要的App电量分析测试来了
  5. c++ 私有内部类_Java内部类新解,你没有见过的船新版本
  6. 状态开关(ToggleButton)
  7. Java 自定义排序 Comparator
  8. LeetCode数据库 177. 第N高的薪水
  9. 删数问题(Noip1994)--贪心
  10. CentOS 7上升级openssh7.5
  11. xposed框架_无需Root使用Xposed框架、功能非常强大
  12. django+layui图片上传(用户头像修改,实时预览)
  13. YYLabel 自动布局 不换行 numberOfLines无效
  14. 微信小程序 - 开发者账号申请流程
  15. 10分钟教你生成超高逼格微信朋友圈
  16. 有没有python搜题_python搜题公众号
  17. 2021-10-21《能源与节能》能源环保省级期刊
  18. K210识别数字(0~9)并与单片机通信通过数字来控制小车移动
  19. iOS自动化测试(Appium+Robotframework )
  20. U盘UEFI引导OS内核的小白教程

热门文章

  1. 绍一下Spring Cloud微服务架构
  2. 总结计算机中十进制数二进制数,计算机中十进制转换为二进制的新方法
  3. 基于HSV空间的光影检测
  4. vivado生成mig_ddr3调试经验分享(一)——modelsim实现对vivado中的MIG ddr3的仿真
  5. awk中字符串处理函数
  6. 思科Webex定义协作的未来
  7. vue 声明周期函数_Vue 生命周期详解
  8. 今天才发现!微信这样发语音才好听,学会快去尝试下吧
  9. 模型常用评估指标详解
  10. 转:从头开始编写基于隐含马尔可夫模型HMM的中文分词器