【发布时间】:2013-01-13 16:55:39
【问题描述】:
我已经找到了一个关于 UUID 正则表达式 here 的问题,但是这些表达式不考虑缺少分隔符。
我想出了following expression,但是有没有更优化的RegEx?
/\b([0-9a-f]{8}-?([0-9a-f]{4}-?){3}[0-9a-f]{12})\b/i
【问题讨论】:
-
在什么方面最优化?长度?执行时间处理时间?更严格的正则表达式?
我已经找到了一个关于 UUID 正则表达式 here 的问题,但是这些表达式不考虑缺少分隔符。
我想出了following expression,但是有没有更优化的RegEx?
/\b([0-9a-f]{8}-?([0-9a-f]{4}-?){3}[0-9a-f]{12})\b/i
【问题讨论】:
我假设您的意思是更短的表达式。我将您的正则表达式简化为以下内容:
/[\da-f]{8}-?([\da-f]{4}-?){3}[\da-f]{12}/i,您可以在here 中看到它。
我删除了外括号和\b,因为没有它们,一切都正确匹配。
我还可以通过将[0-9a-f] 替换为[\da-f] 来减少三个字符。
我原来有[0-F],但在检查了ASCII序列后,我意识到匹配
0123456789:;<=>?@ABCDEF,其中包含一些我们不想匹配的额外符号。
总之,我的表达方式与你的表达方式相同,但少了九个字符。
【讨论】: