自己整理得一些正则小知识

193 阅读2分钟

正则

正则是一种处理字符串的规则;
JS中的正则 一种引用数据类型; RegExp
正则的编写方式 :
    字面量的方式:  /zhufeng/
    实例的方式:  new RegExp('zhufeng')   当正则中的一些字符需要是变量的时候;才会选择这种方式

正则的两种用途
    用于匹配  test  编写一个正则(制定了一套规则);去测试某个字符串是否符合这个规则;
    用于捕获  exec  编写一个正则(制定了一套规则); 去把某个字符串中符合这个规则的字符获取到

var reg = /zhufeng\d+/   : 斜杠中间的 zhufeng  我们称为元字符;

元字符可以分为: 
  有特殊含义的元字符 
  普通元字符

  有特殊含义的元字符:
  \       转义字符
  \d      0-9之间的数字
  \D      除了0-9的任意字符
  \w      数字 字母 下划线
  \W      除了 数字 字母 下划线的任意字符
  ^       以什么字符开头
  $       以什么字符结尾
  .       代表除了换行以外的所有字符
  \n      代表换行

  x|y     x或者y
  [xyz]   x或者y或z
  [^xy]   除了xy的任意字符
  [a-z]   a到z的任意字符 小写的英文字母
  [^a-z]  除了a-z的任意字符
  ()      分组和提升优先级
  (?:)    只匹配不捕获
  (?=)    正向肯定预查
  (?!)    正向否定预查

量词元字符: 都是用在其他元字符后边的; /zhufeng{3}}/  zhufenggg
?          前边的字符出现 0或1次;
+          前边的字符出现 1或多次;
*          前边的字符出现 0或多次;n
{n}        前边的字符出现 n次;
{n,m}      前边的字符出现 n到m次;
{n,}       前边的字符出现 n到多次;

修饰符:用在正则外边的  /abc/i
i    ignoreCase : 忽略大小写
m    multiline   多行匹配
g    global 全局匹配
var str = '珠峰666';
var reg = /\d/; // 只要字符串中含有数字 即可
console.log(reg.test(str)) // true [].push(7)
console.log(reg.test('werwf2ergdfg'))//true
console.log(reg.test('aefasdfsdfsf'))//false
console.log(reg.test('3453245254')) // true */

/* var reg = /\d?/; // 数字出现0或1次  字符串有没有数字都满足情况
console.log(reg.test('zhufeng666')) // true
console.log(reg.test('werwf2ergdfg'))//true
console.log(reg.test('aefasdfsdfsf'))//true
console.log(reg.test('3453245254')) // true
 */

/* var reg = /\d{2,4}/; // 字符串中有没有连续2个或者3个数字 或者4个数字
//  /\d\d/  /\d\d\d/  /\d\d\d\d/
console.log(reg.test('zhufeng666')) // true
console.log(reg.test('werwf2ergdfg'))//false
console.log(reg.test('aefasdfsdfsf'))// false
console.log(reg.test('3453245254')) // true */


/* var reg = /\d{2}/; // 字符串中 有两个连续的数字 即可
console.log(reg.test('zhufeng666')) // true
console.log(reg.test('werwf2e3rgdfg'))// false
console.log(reg.test('aefasdfsdfsf'))// false
console.log(reg.test('3453245254')) // true */


/* var reg = /^\d/; // 要求字符串是 以数字开头的
console.log(reg.test('zhufeng666')) // false
console.log(reg.test('werwf2e3rgdfg'))// false
console.log(reg.test('aefasdfsdfsf'))// false
console.log(reg.test('3453245254')) // true */


var reg = /^\d{2,3}/; // 要求 字符串 是以 两个或者三个数字开头的 即可
console.log(reg.test('1zhufeng666')) // false
console.log(reg.test('22werwf2e3rgdfg'))// true
console.log(reg.test('432aefasdfsdfsf'))// true
console.log(reg.test('3453245254')) // true