本文已参与「新人创作礼」活动,一起开启掘金创作之路。
JS正则表达式:元字符详细解析
^ $
let re1 = /^\d/; // 字符串必须以数字开头
console.log(re1.test('abcdefg')); // => false
console.log(re1.test('1234567')); // => true
console.log(re1.test('0abcdef')); // => true
let re1 = /\d$/; // 字符串必须以数字结尾
console.log(re1.test('abcdefg')); // => false
console.log(re1.test('1234567')); // => true
console.log(re1.test('0abcdef')); // => false
let re1 = /\d+/; // ^ $ 两个都不加, 那么字符串当中只要包含规则的内容即可
let re1 = /^\d$+/; // ^ $ 两个都加, 那么字符串只能是和规则一致
/**
* 验证手机号码 ( 11位, 第一个数字是1就行 )
*/
let reg = /^1\d{10}$/
\
// (.) => 点不是字符, 而是除了\n以外的任意字符
let reg = /^a.b$/; // .可以代表任意字符
console.log(re1.test('a1b')); // => true
console.log(re1.test('a\tb')); // => true
console.log(re1.test('a\nb')); // => false, .唯一不能匹配\n
// (\.) => 代表(.), (\)能把特殊字符传换成普通字符
let reg = /^a\.b$/; // .在这里被转意了, 代表字符串.
console.log(re1.test('a.b')); // => true
console.log(re1.test('a1b')); // => false
console.log(re1.test('a2b')); // => false
|
let reg = /^\d$|^\s$/ // => 只能匹配一个空格或者一个数字的字符
console.log(reg.test(' ')); // => true
console.log(reg.test('1')); // => true
console.log(reg.test('2 0')); // => false
console.log(reg.test(' 30')); // => false
/**
* | 如果但如使用, 规则会变得很混乱, 如同下面的一样,
* 本来匹配ab或者xd的字符, 但是规则变得异常混乱:
* 1. ab开头的字符(true)
* 2. ab开头的字符(true)
* 3. a开头b结尾, 中间是b或c的字符(true)
*/
let reg = /^ab|cd$/ // => 只能匹配以数字开头或者以空格结尾的字符
console.log(reg.test('ab')); // => true
console.log(reg.test('cd')); // => true
console.log(reg.test('abd')); // => true
console.log(reg.test('acd')); // => true
console.log(reg.test('abcd')); // => true
console.log(reg.test('bcd')); // => true
console.log(reg.test('ab123')); // => true
// 所以, 一般用 ()分组括号 来配合 | 的使用, 他有提高优先级的作用
let reg = /^(ab|cd)$/ // => 匹配字符 ab 或者 cd
console.log(reg.test('ab')); // => true
console.log(reg.test('cd')); // => true
console.log(reg.test('abd')); // => false
console.log(reg.test('acd')); // => false
console.log(reg.test('abcd')); // => false
console.log(reg.test('bcd')); // => false
console.log(reg.test('ab123')); // => false
[]
// 1. 中括号中一般出现的字符都代表本身含义, 除了 \s\d\w这些
let reg = /^[abc]$/; // => 匹配[]中出现的字符一次
console.log(reg.test('a')) // => true
console.log(reg.test('b')) // => true
console.log(reg.test('c')) // => true
console.log(reg.test('ab')) // => false
console.log(reg.test('bc')) // => false
let reg = /^[abc]+$/; // => 匹配[]中出现的字符一次或者多次
console.log(reg.test('a')) // => true
console.log(reg.test('b')) // => true
console.log(reg.test('c')) // => true
console.log(reg.test('ab')) // => true
console.log(reg.test('bc')) // => true
console.log(reg.test('abc'))// => true
let reg = /^[\d]+$/; // => 匹配一个数字或者一串数字
console.log(reg.test('1')) // => true
console.log(reg.test('12')) // => true
console.log(reg.test('123'))// => true
console.log(reg.test('1a2'))// => false
let reg = /^[(10)]+$/; // => 匹配(或1或0或)一次或者多次
console.log(reg.test('(10)')) // => true
console.log(reg.test('(10')) // => true
console.log(reg.test('(')) // => true
console.log(reg.test('1a2')) // => false
// 2. 中括号中不存在多位数
let reg = /^[20]$/; // 匹配2或者0一次
console.log(reg.test('2')) // => false
console.log(reg.test('0')) // => false
console.log(reg.test('20')) // => true
let reg = /^[34-91]$/; // 匹配3或者1或者4-9的数一次
console.log(reg.test('1')) // => true
console.log(reg.test('3')) // => true
console.log(reg.test('4')) // => true
console.log(reg.test('34')) // => false
console.log(reg.test('91')) // => false