Javascript 正则表达式总是返回 true

Javascript regex always returns true

本文关键字:返回 true 正则表达式 Javascript      更新时间:2023-09-26
var re = /^'[*:*']*/;
alert(re.test("aa"));

始终提醒 true(在任何字符串上)。我做错了什么?我需要检查字符串开头是否有类似 [445:123] 的内容。

你的正则表达式意味着

  • 在字符串的开头...
  • 可以有零个或多个[字符...
  • 然后零个或多个:字符...
  • 然后零个或多个]字符。

字符串"aa"与此匹配。您可能想要类似以下内容:

var re = /^'['d+:'d+']/;

+量词表示"一个或多个",而*表示"零或多个"。 'd转义的意思是"任何数字"。

*编辑 — 如果正则表达式需要匹配类似的东西

[12:2:17:419]

以及,那么它将是

var re = /^'['d+(:'d+)+']/;

您正在检查任意数量的[,后跟任意数量的:,后跟任意数量的]。请注意,这是任意数字 - 其中任何一个出现 0 次都是有效的结果。

听起来你的意思更像是var re= /^'['d+:'d+']/;

在正则表达式中,* 并不意味着通配符匹配,它意味着前一个标记的零个或多个。要匹配任何字符,请改用.。您想要匹配的内容的正则表达式更像这样......

/^'[.*:.*'].*/

但更好的是更具体一点,用'd匹配小数,用+匹配之前的一个或多个标记,匹配后去掉错误的字符......

/^'['d+:'d+']/