繁体   English   中英

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

[英]How to find string that matches the particular regular expression?

我在正则表达式/(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从字面上匹配具有索引18(110或116)的字符(区分大小写)

根据regex101.com:

第一个捕获组(a):a逐字匹配字符(区分大小写)

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

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

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

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

  1. 转到regex101.com,在RegExp栏上输入\\ 18。
  2. 在右边,它解释了模式。 将字符复制到此处:\\ 1按字面意义(区分大小写)将索引为18(110或116)的字符[这里有流水线式]匹配。
  3. 在此代码中将字符替换为 。
  4. 运行命令并在控制台上获取真值:)

-或-\\ 1完全匹配\\ 1

您正在转义1,这并不是一个特殊字符。 因此,它仅与确切的文本匹配:

  • 一个并捕获它。
  • 恰好\\ 1
  • 恰好8

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

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

在后一种情况下,“ patat”将被忽略,但与前面说明的模式匹配:a \\ 18

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM