var re = /^\[*:*\]*/;
alert(re.test("aa"));
始终警报 true(在任何字符串上)。我究竟做错了什么?我需要检查字符串开头是否有类似 [445:123] 的内容。
var re = /^\[*:*\]*/;
alert(re.test("aa"));
始终警报 true(在任何字符串上)。我究竟做错了什么?我需要检查字符串开头是否有类似 [445:123] 的内容。
你的正则表达式意味着
[字符...:字符...]字符。字符串“aa”与之匹配。你可能想要这样的东西:
var re = /^\[\d+:\d+\]/;
+量词表示“一个或多个”,而表示*“零个或多个”。\d转义的意思是“任何数字”。
*edit - 如果正则表达式需要匹配类似的东西
[12:2:17:419]
同样,那将是
var re = /^\[\d+(:\d+)+\]/;
您正在检查任意数量的[,然后是任意数量的:,然后是任意数量的]。请注意,这是任何数字 - 其中任何一个出现 0 次都是有效结果。
听起来你的意思更像是var re= /^\[\d+:\d+\]/;
在正则表达式中,*不表示通配符匹配,它表示前一个标记的零个或多个。要匹配任何字符,请.改用。您想要匹配的正则表达式更像这样......
/^\[.*:.*\].*/
但更好的是更具体,\d用于匹配小数,+用于匹配前面的一个或多个token,匹配后去掉错误字符...
/^\[\d+:\d+\]/