如何查找与特定正则表达式匹配的字符串?

时间:2017-03-11 13:35:46

标签: javascript regex

我正在努力学习正则表达式/(a)\18/。我试着找出与此正则表达式匹配的字符串返回true ,但我已经尝试过的所有可能性都返回false。

/(a)\18/.test('a18'); //false
/(a)\18/.test('aa8'); //false

\18不能是八进制数,它可以引用第一个捕获组(a),然后是 8 ,如上所述,或者它可以如上所述只是转义 1 ,然后是 8 ,但两者都返回false。有人可以解释一下这个特定正则表达式究竟是由什么组成的吗?对我来说,不要改变正则表达式是至关重要的。它应该如上所示。提前谢谢

var a = /(a)\18/.test('a18');
var b = /(a)\18/.test('aa8');

console.log(a,b);

1 个答案:

答案 0 :(得分:1)

这个问题有两个答案:

\ 1字面匹配索引为18(110或116)的字符(区分大小写)

根据regex101.com:

  

第一捕获组(a):a字面符合字符(案例   敏感)

     

\ 1字面匹配索引为18(110或116)的字符(区分大小写)

     

8字符8字面匹配(区分大小写)

代码:console.log(/(a)\18/.test('a�8')); // returns true

注意:这将返回false,因为StackOferflow用�替换实际字符。要重新创建此项,请执行以下操作:

  1. 转到regex101.com,在RegExp栏上写\ 18。
  2. 在右边,它解释了模式。在那里复制字符:\ 1匹配字符 [这里有一个管道 - ish] ,其字面意义为索引18(110或116)(区分大小写)。
  3. 在此代码中替换�的字符。
  4. 运行命令并在控制台上获得true:)
  5. - 或 - \ 1完全匹配\ 1

    你正在逃避1,这不是一个特殊的角色。 因此,它只是匹配确切的文本:

    • a并捕获它。
    • 完全\ 1
    • 完全是8

    代码:console.log(/(a)\18/.test('a\18')); // returns true

    另一个例子:console.log(/(a)\18/.test('patata\18')); // returns true

    在后一种情况下," patat"被忽略,但它与之前解释的模式相匹配:a \ 18