什么是模式匹配?

时间:2012-02-22 17:26:08

标签: javascript regex

任何人都可以帮我提出一个正则表达式: AC :: CC DD :: :: EE :: FF :: EE (两个字母或数字,但不是像%或任何其他的花哨字符,后跟::)。 提前致谢

4 个答案:

答案 0 :(得分:2)

我没有对此进行测试,但几乎所有的正则表达式解释器都应该将此模式识别为您想做的事情:[a-zA-Z0-9][a-zA-Z0-9](::[a-zA-Z0-9][a-zA-Z0-9])*

如果你想让它只在线上匹配这个模式那么它应该是这样的:

^[a-zA-Z0-9][a-zA-Z0-9](::[a-zA-Z0-9][a-zA-Z0-9])*$

请注意,此模式将匹配A1或匹配AC:CC:DD:E1:FF:EE:ZZ:MK:LM:Z0。 (您是否希望它只有六个字段而不是一个或多个?)

我建议使用this website作为regexp的备忘单。

答案 1 :(得分:2)

(两个字母或数字,但不是像%或任何其他的花哨字符,后跟::)

[\w\d]{2}::

但是你需要匹配整个字符串还是仅仅在那个语句中?

答案 2 :(得分:2)

'AC::CC::DD::EE::FF::EE::55::AA'.match(/\w{2,}(::|$)|\d{2,}(::|$)/g);

输出

["AC::", "CC::", "DD::", "EE::", "FF::", "EE::", "55::", "AA"]

答案 3 :(得分:-1)

这个正则表达式可以。

/^([\dA-F]{2}::){5}[\dA-F]{2}$/

示例

/^([\dA-F]{2}::){5}[\dA-F]{2}$/.test("AC::CC::DD::EE::FF::EE") // true
/^([\dA-F]{2}::){5}[\dA-F]{2}$/.test("AC::CC::DD::E3E::FF::EE") // false