元字符
目标:能说出什么是元字符以及它的好处
- 普通字符:
大多数的字符仅能够描述它们本身,这些字符称作普通字符,例如所有的字母和数字。
- 元字符(特殊字符):
是一些具有特殊含义的字符,可以极大提高了灵活性和强大的匹配功能。
-
- 比如,规定用户只能输入英文26个英文字母,普通字符的话 abcdefghijklm…
-
- 但是换成元字符写法:[a-z]
-
参考文档
-
- MDN:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Guide/Regular_Expressions
-
- 正则测试工具:http://tool.oschina.net/regex
总结
1.什么是元字符以及它的好处是什么?
- 是一些具有特殊含义的字符,可以极大提高了灵活性和强大的匹配功能
- 比如英文26个英文字母,我们使用元字符 [a-z] 简写和灵活
为了方便记忆和学习,我们对众多的元字符进行了分类:
- 边界符(表示位置,开头和结尾,必须用什么开头,用什么结尾)
- 量词(表示重复次数)
- 字符类(比如 \d 表示 0~9)
边界符
- 正则表达式中边界符(位置符)用来提示字符所处的位置,主要有两个字符
边界符 | 说明 |
---|---|
^ | 表示匹配行首的文本(以谁开始) |
$ | 表示匹配行尾的文本 (以谁结束) |
如果 ^ 和 $ 在一起,表示必须是精确匹配。
console.log(/哈/.test('哈')) // true
console.log(/二哈/.test('二哈')) // true
console.log(/二哈/.test('很二哈哈')) // true
// ^ 开头
console.log(/^二哈/.test('很二哈哈')) // false
console.log(/^二哈/.test('二哈很傻')) // true
// $ 结尾
console.log(/^二哈$/.test('二哈很傻')) // false
console.log(/^二哈$/.test('二哈二哈')) // false
console.log(/^二哈$/.test('二哈')) // true
量词
- 量词用来 设定某个模式出现的次数
量词 | 说明 |
---|---|
* | 重复零次或更多次 |
+ | 重复一次或更多次 |
? | 重复零次或一次 |
{n} | 重复n次 |
{n,} | 重复n次或更多次 |
{n,m} | 重复n到m次 |
注意:逗号左右两侧千万不要出现空格
// * 表示重复0次或者更多次
console.log(/^哈*$/.test('')) // true
console.log(/^哈*$/.test('哈')) // true
console.log(/^哈*$/.test('哈哈哈')) // true
// + 表示重复1次或者更多次
console.log(/^哈+$/.test('')) // false
console.log(/^哈+$/.test('哈')) // true
console.log(/^哈+$/.test('哈哈哈')) // true
// ? 表示重复0次或者1次 0 || 1
console.log(/^哈?$/.test('')) // true
console.log(/^哈?$/.test('哈')) // true
console.log(/^哈?$/.test('哈哈哈')) // false
// {n} n次
console.log(/^哈{2}$/.test('')) // false
console.log(/^哈{2}$/.test('哈')) // false
console.log(/^哈{2}$/.test('哈哈')) // true
console.log(/^哈{2}$/.test('哈哈哈')) // false
// {n,} 是 >=n 的意思
console.log(/^哈{2,}$/.test('')) // false
console.log(/^哈{2,}$/.test('哈')) // false
console.log(/^哈{2,}$/.test('哈哈')) // true
console.log(/^哈{2,}$/.test('哈哈哈')) // true
// {n,m} 是次数>=n <=m 的意思;注意:逗号左右千万不要有空格
console.log(/^哈{2,4}$/.test('')) // false
console.log(/^哈{2,4}$/.test('哈')) // false
console.log(/^哈{2,4}$/.test('哈哈')) // true
console.log(/^哈{2,4}$/.test('哈哈哈')) // true
console.log(/^哈{2,4}$/.test('哈哈哈哈')) // true
console.log(/^哈{2,4}$/.test('哈哈哈哈哈')) // false
总结
+ 表示重复至少1次
? 表示重复0次或1次
* 表示重复0次或多次
{n,m} 表示重复 n到m 次