js 正则表达式

1.^和 $

  • ^ 以什么元字符开始
  • $ 以什么元字符结尾
  • ^和$ 两个都不加:字符串中包含符合规则的内容即可
  • ^/$ 两个都加:字符串只能是和规则一致的内容
  • \d 匹配所有数字
1.1 匹配 以数字开头的字符串
let reg = /^\d/;
console.log(reg.test('name'));   //false
console.log(reg.test('2020name'));  //true
console.log(reg.test('name2020'));   //false
1.2 匹配 以数字结尾的字符串
let reg = /\d$/;
console.log(reg.test('name'));   //false
console.log(reg.test('2020name'));  //false
console.log(reg.test('name2020'));   //true
1.3 匹配 带数字的字符串
let reg = /\d/;
console.log(reg.test('name'));   //false
console.log(reg.test('2020name'));  //true
console.log(reg.test('name2020'));   //true
1.4 严格匹配
// 以数字开头,数字结尾,\d表示只有一个数字
let reg = /^\d$/;
console.log(reg.test('2'));   //true
console.log(reg.test('21'));   //false  如果是/^\d+$/的话,则为true

2. 转义字符 \

2.1 ‘.’ 是代表除换行符之外的任意字符,而不是小数点let
// 这里表示在2和3之间有一个任意字符
reg = /^2.3$/; 
console.log(reg.test('2.3')); //true
console.log(reg.test('2@3')); //true
console.log(reg.test('23')); //false
2.2 现在我们把‘.’变为一个普通的小数点(在.前面加上转义字符\)
// 这里.就是表示.
let reg = /^2\.3$/;
console.log(reg.test('2.3')); //true
console.log(reg.test('2@3')); //false
2.3 {n,m}

它是代表前面的元字符出现 n 到 m 次

//这个正则匹配的是数字出现2到4次即可,明显第三个超出了,应该返回false,但是结果却是true,但是加上^$ 就不一样了
let reg = /\d{2,4}/;
reg.test('1');  //false
reg.test('14'); //true
reg.test('123456'); //true
//加上^$ 之后的结果:这个就代表只能有2-4位数字,超过就多余,而上一个匹配的是只有字符串中出现2-4次即可,因此加上^$ 更加严谨
let reg = /^\d{2,4}$/;
reg.test('1'); //false
reg.test('14'); //true
reg.test('123456'); //false
2.4 x|y

x 或 y:直接 x|y 会存在优先级问题,一般配合小括号进行分组使用,因为小括号改变处理的优先级 => 小括号:分组

//匹配的是:以18开头或者以29结尾的都可以,以1开头以9结尾,8或2都可以,所以不加括号怎么理解都可以
//以下的匹配结果都为true
console.log(reg.test('18'));
console.log(reg.test('29'));
console.log(reg.test('129'));
console.log(reg.test('189'));
console.log(reg.test('1829'));
console.log(reg.test('182'));

//以上不加括号我们可以有很多理解方式都是对的,但是我们加上括号,就不可能想上面那样理解了;
//匹配的是:18或者29中的一个,其余都是false
let reg = /^(18|29)$/;
console.log(reg.test('18'));
console.log(reg.test('29'));
console.log(reg.test('129'));
console.log(reg.test('189'));
2.5 []
  • 中括号中出现的字符「一般」都代表它本身的含义(会消磁,把他本身的意义都消除掉了)
  • \d 在中括号里面的含义仍然是 0-9,这个没有消磁
  • [18]:代表的是 1 或者 8 中的任意一个
  • [10-29]:代表的是 1 或者 9 或者 0-2

下面的‘.’就是小数点的意思

//下面的‘.’就是小数点的意思
let reg = /^[.]+$/;
  • 匹配的含义是:\d还是代表0-9
let reg = /^[@+]$/; 
console.log(reg.test('@')); //true
console.log(reg.test('+')); //true
console.log(reg.test('@@')); //false
console.log(reg.test('@+')); //false
  • 匹配的含义是:1或者8
let reg = /^[18]$/;
console.log(reg.test('1')); //true
console.log(reg.test('8')); //true
console.log(reg.test('18')); //false
  • 匹配的含义是:1或者0-2或者9
let reg = /^[10-29]$/;
//匹配的含义是:1或者0-2或者9或'('或')'
let reg = /^[(10-29)]$/;

你可能感兴趣的:(javascript,正则表达式,开发语言)