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+\]/