我有一个字符串。
var string="ghtykj";
var pattern = "t*y";
当我给出 new RegExp(pattern).test(string) 时,它返回 true(如预期)。
var pattern = "t*g";
但是这个模式也返回 true。
我原以为此模式会返回 false,因为 t*g 表示 t 后跟零个或多个字符,再后跟 g。
如果这确实是预期的行为,有人可以纠正我哪里做错了吗?
最佳答案
*
不是正则表达式中的通配符,而是量词。它与量词 {0,}
具有相同的含义,即指定它之前的表达式(在本例中为字符 t
)可以出现零次或多次。
模式 t*g
并不意味着 t 后跟零个或多个字符,然后是 g。它表示零个或多个字符 t,后跟一个 g。
模式 t*g
将匹配例如 tg
或 ttttg
,但也只是 g
。因此,它匹配字符串开头的 g
字符。
要获得匹配 t 后跟零个或多个字符,后跟 g 的模式,您可以使用 t.*g
(或 t[\w\W]*g
来处理字符串中的换行符)。
关于Javascript RegExp ' * ' 未按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30277184/