我需要像EWD-eb-AEW-97-QOW
一样的字符串regexp。
一般模式是: 3个大写字母,十六进制,3个大写字母,十六进制,3个大写字母。
我用:
/[A-Z]{3}-\h-[A-Z]{3}-\h-[A-Z]{3}/
但它不起作用。任何人都可以帮助解释它为什么不起作用吗?
答案 0 :(得分:2)
答案 1 :(得分:2)
答案 2 :(得分:0)
我会使用类似的东西:
/(?:[A-Z]{3}-[a-f0-9]{2}-){2}[A-Z]{3}/
https://www.regex101.com/r/aY5eF6/1
(?:[A-Z]{3}-[a-f0-9]{2}-)
将三个字母'-'
,两个十六进制字母和'-'
分组,然后再进行两次,然后再重复三个字母。
关于使用Ruby的\h
Regexp扩展:
我要小心在混合语言环境中使用\h
之类的特殊字符,或者支持旧版Ruby的特殊字符。我们使用YAML来包含各种语言之间共享的模式,这样的事情会开启一个非常难以跟踪的bug。我建议使用[a-f0-9]
,除非你知道你永远不会遇到这个问题。