正则表达式是有规律的表达式,在js中常用来表单校验。

1、创建正则表达式

  1. 构造函数 RegExp
  var reg1 = new RegExp(/111/); 

  1. 正则的字面量
var reg2 = /111/;

2、正则表达式中的方法

test():用来测试字符串是否符合正则表达式的规律,返回true / false。

replace() :replace 方法第一个参数可以写正则表达式

var str = "   123AD  asadf   asadfasf  adf  ";
//  替换掉字符串中的所有空白
var str2 = str.replace(/\s/g, "");   // str2 :"123ADasadfasadfasfadf"

// 将所有的ad/AD替换成xx
//var str3 = str.replace(/ad|AD/g, "yy");
var str3 = str.replace(/ad/gi, "yy");  // i :  ignore  忽略大小写
console.log(str3);

/\g:全局匹配global

/\i :忽略大小写ignore

3、 正则表达式中的优先级

| :或 ,优先级最低

() : 优先级最高

console.log(/(f|b)oot/.test("foot"));   // true
console.log(/(f|b)oot/.test("boot"));   // true
console.log(/(f|b)oot/.test("fb"));     // false

4、 正则表达式中的元字符

  • \d:匹配一个数字 0-9
console.log(/\d/.test("a")); // false
console.log(/\d/.test("a1")); // true

  • \D:匹配非数字
console.log(/\D/.test("a"));  // true
console.log(/\D/.test("a1")); // true
console.log(/\D/.test("1"));  // false

  • \w:匹配单词字符 a-z A-Z 0-9 _
console.log(/\w/.test("a"));   // true
console.log(/\w/.test("1"));   // true
console.log(/\w/.test(" "));   // false
console.log(/\w/.test("$%^&*"));  // false

  • \W:匹配非单词字符
console.log(/\W/.test("a"));   // false
console.log(/\W/.test("1"));   // false
console.log(/\W/.test(" "));   // true
console.log(/\W/.test("$%^&));  // true

  • \s:匹配不可见字符 空格 换行(\n) 制表符(\t)
console.log(/\s/.test("a"));   // false
console.log(/\s/.test(" "));    // true
console.log(/\s/.test("1\na"));  // true
console.log(/\s/.test("1"));   // false

  • \S:匹配可见字符
console.log(/\S/.test("a"));   // true
console.log(/\S/.test(" "));    // false
console.log(/\S/.test("1\na"));  // true
console.log(/\S/.test("1"));   // true

  • . :匹配除了换行和回车的任意字符
console.log(/./.test("abc"));   // true
console.log(/./.test("\n"));   // false
console.log(/./.test(" "));  // true

注:若只匹配小数点 ,需要转义 .

console.log(/\./.test("a"));  // false
console.log(/\./.test("1.2"));  // true

5、字符类元字符

[]:表示一个字符的位置,在[]里面可以写上能够出现的字符。

在[]中 - 代表范围; ^ 代表非。

// [abc]  ==> 匹配a或者是b或者是c ,本身自带或的含义
// [0-9]  ==> 匹配0-9中的任意一个
// [a-z]  ==> 匹配a-z中的任意一个
// [a-zA-Z0-9]  ==> 匹配 a-z  A-Z  0-9 其中任意一个字符

6、边界类元字符

^ 表示开头 ;$ 表示结束。

//^ $  一起使用实现精确匹配
console.log(/^chuan$/.test("chuan"));    // true
console.log(/^chuan$/.test("chuanchuan"));    // false

7、量词类元字符

* :次数是0次或0次以上 ;相当于{0,}

+ :次数是1次或1次以上 ;相当于{1,}

? : 次数是0或者1 ;相当于{0,1}

{m} :次数是m次

{m,} :次数是m次以上

{m,n} :次数是m到n之间

// 匹配 没有a  或者一个a 或者是多个
console.log(/^a*$/.test(""));  // true
console.log(/^a*$/.test("a"));  // true
console.log(/^a*$/.test("aa"));  // true
console.log(/^a*$/.test("abc"));  // false

// +
console.log(/^a+$/.test(""));  // false
console.log(/^a+$/.test("a"));  // true
console.log(/^a+$/.test("aa"));  // true
console.log(/^a+$/.test("abc"));  // false

// ?  匹配没有a  或者是一个a
console.log(/^a?$/.test(""));  // true
console.log(/^a?$/.test("a"));  // true
console.log(/^a?$/.test("aa"));  // false
console.log(/^a?$/.test("abc"));  // false

// {}
console.log(/chuan{2}/.test("chuanchuan"));  // false
console.log(/(chuan){2}/.test("chuanchuan"));  // true
console.log(/chuan{2}/.test("chuann"));  // true

注:量词是就近修饰的。

最后修改:2023 年 05 月 23 日
如果觉得我的文章对你有用,请随意赞赏