正则[0-9]+[a-zA-Z]与\d+[a-zA-Z]匹配出来的结果为什么不一样呢

155 阅读1分钟

首先了解一下正则的语法

  • .  - 除换行符以外的所有字符。
  • ^  - 字符串开头。
  • $  - 字符串结尾。
  • \d,\w,\s - 匹配数字、字符、空格。
  • \D,\W,\S - 匹配非数字、非字符、非空格。
  • [a-z] - 匹配 a 到 z 中的一个字母。
  • [A-Z]  - 匹配 A 到 Z 中的一个字母。
  • [abc]  - 匹配 a、b 或 c 中的一个字母。
  • [^abc]  - 匹配除了 a、b 或 c 中的其他字母。
  • aa|bb - 匹配 aa 或 bb。
  • ?  - 0 次或 1 次匹配。
  • *  - 匹配 0 次或多次。
  • +  - 匹配 1 次或多次。
  • {n}  - 匹配 n次。
  • {n,}  - 匹配 n次以上。
  • {m,n}  - 最少 m 次,最多 n 次匹配。
  • (expr)  - 捕获 expr 子模式,以 \1 使用它。
  • (?:expr)  - 忽略捕获的子模式。
  • (?=expr)  - 正向预查模式 expr
  • (?!expr)  - 负向预查模式 expr

var pat1 = new RegExp('^[0-9]+[a-zA-Z]+[0-9]+$');

console.log(pat1.test ('7rppp333'))

// true

var pat2 = new RegExp('^\d+[a-zA-Z]+\d+$')

console.log(pat2.test('7rppp333'))

//false

为什么会不一样呢,条件都是一样的,

其结果原来是需要用转义符''转义一下,d前面加两个斜杠 \\d

var pat2 = new RegExp('^\\d+[a-zA-Z]+\\d+$')

console.log(pat2.test('7rppp333'))

此时打印出来返回的结果就是true啦

大家一定要注意这一点**