JavaScript 正则表达式:特殊字符

本文参考了 https://javascript.info/ 站点里的相关资料。

学习过 JS 正则表达式的同学应该都知道,在匹配字符的时候,有一些特殊字符在正则中具有特殊含义,需要经过 转义后才能表示匹配那个字符本身,

特殊字符

JS 正则中的特殊字符是:[]{}()^$.|?*+,一共 14 个。

这些特殊的字符的含义分别是:

  • [] 是用来表达字符范围的
"Mop top".match(/[tm]op/gi); // ['Mop', 'top']
  • {} 是用来表达匹配数量的
// 匹配 5 位数字
"I'm 12345 years old".match(/d{5}/);
// ['12345', index: 4, input: "I'm 12345 years old", groups: undefined]
  • +*?{n} 的速记写法。+ 等价于 {1,}* 等价于 {0,}? 等价于 {0,1}
  • ()是用来标记捕获组的。
"2019-04-30".match(/(?<year>[0-9]{4})-(?<month>[0-9]{2})-(?<day>[0-9]{2})/)
//  ['2019-04-30', '2019', '04', '30', index: 0, input: '2019-04-30', groups: {year: '2019', month: '04', day: '30'}]
  • ^$ 称为“锚点(anchors)”,匹配文本的开头和末尾
/^Mary/.test("Mary had a little lamb"// true
/snow$/.test("its fleece was white as snow"// true
// 完整匹配
/^dd:dd$/.test("12:34"// true
/^dd:dd$/.test("12:345"// false
  • . 则用来表示任意一个字符(除了换行符)
"Z".match(/./)
// ['Z', index: 0, input: 'Z', groups: undefined]
  • 用来转义特殊字符时使用
"Chapter 5.1".match(/d.d/)
// ['5.1', index: 8, input: 'Chapter 5.1', groups: undefined]
  • | 用于表示或
"First HTML appeared, then CSS, then JavaScript".match(/html|php|css|java(script)?/gi)
// ['HTML', 'CSS', 'JavaScript']

范围语法 […] 中那些不需要转义的特殊字符

范围语法 [...] 中有些特殊字无需转义。分别是:

  1. .+()
  2. 在开头或结尾的连字符 -
  3. 不在开头的尖尖号 ^

比如下面的写法,就是冗余的:

"1 + 2 - 3".match(/[-().^+]/g)
// ['+', '-']

完全可以简写成:

"1 + 2 - 3".match(/[-().^+]/g)
// ['+', '-']

总结

本文介绍了 JS 正则表达式中的特殊字符相关的知识。突然感觉到,JS 正则表达式虽然强大,但有时确实挺难读的,简洁也会带来一些理解和学习成本。

感谢你的阅读,Happy Coding!


原文始发于微信公众号(写代码的宝哥):JavaScript 正则表达式:特殊字符

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/243685.html

(0)
小半的头像小半

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!