繁体   English   中英

Javascript RegExp'*'未按预期工作

[英]Javascript RegExp ' * ' not working as expected

我有一个字符串。

var string="ghtykj";
var pattern = "t*y";

当我给出新的RegExp(pattern).test(string)时,它返回true(如预期的那样)。

var pattern = "t*g";

但这种模式也是如此。

我期待这个模式返回false,因为t * g表示t后跟零个或多个字符,后跟g。

如果这确实是预期的行为,任何人都可以纠正我在哪里做错了吗?

*不是正则表达式中的通配符,是量词。 它与量词{0,}具有相同的含义,即指定其前面的表达式(在本例中为字符t )可以出现零次或多次。

模式t*g并不意味着t后跟零个或更多个字符,后跟g。 它表示零个或多个字符t,后跟一个g。

模式t*g将匹配例如tgtttttg ,但也只是g 因此,它匹配字符串开头的g字符。

要获得匹配t后跟零个或多个字符的模式,然后使用g,您将使用t.*g (或t[\\w\\W]*g来处理字符串中的换行符)。

因为t * g表示t后跟零个或多个字符,后跟g。

这是不正确的。 这意味着0或更多t ,因此t是可选的。

您可能会想到在终端shell中使用Globbing而不是Globbing,其中*运算符可以按预期工作。 但Globbing *与RegEx *行为不同。

你要

var pattern = "t.*g";

这意味着, . 是可选的(0或更多实例),但必须有t

在正则表达式中. 匹配几乎任何角色

你应该在这里测试你的正则表达式: regex101 ,它会将你的正则表达式翻译成英文,这样更容易理解。

var pattern = "t.*g";

应该是对的。 t*表示0或任意数量的t,这是真的

暂无
暂无

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

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