用于获取一组字符串可能性的特定正则表达式

时间:2011-01-17 14:31:57

标签: regex

我需要构建一个正则表达式,它可以检测所有以下字符串,只有那些。

// 'NC_' or 'NG_', can be from 6 to 9 digits after the underscore.
// '.' is static, can be 1 or 2 digits after the '.'
"NC_123456.12" or "NG_123456.12"
// Example: /^N(G|C)_[0-9]{6,9}\.[0-9]{1,2}/


// 'LRG_' is static, can be 1 or more digits after the underscore
"LRG_1234"
// Example: /LRG_[1-9][0-9]*/


// 'UD_' is static, can be 1 or more digits after the underscore
"UD_123456789012"
// Example: /UD_[0-9]+/

所以我遇到的问题并不是我需要正则表达式来单独找到字符串,但我需要一个可以捕获所有上述情况的正则表达式。我不知道是否有可能,但我想事先感谢所有愿意尝试的人!

2 个答案:

答案 0 :(得分:2)

您可以结合案例2和案例3。另外,你的案例1的正则表达式有点尴尬。

/N[GC]_[0-9]{6,9}\.[0-9]{1,2}|(LRG|UD)_[0-9]+/

如果您使用支持它的变体,则可以使用

/N[GC]_\d{6,9}\.\d{1,2}|(LRG|UD)_\d+/

您在评论中提供的正则表达式示例有点令人困惑。如果LRG_之后的数字不能以0开头,则必须使用以下解决方案:

/N[GC]_\d{6,9}\.\d{1,2}|LRG_[1-9]\d*|UD_\d+/

一般原则是:将您的分支与|合并。

答案 1 :(得分:0)

也许:

/^(N(G|C)_[0-9]{6,9}\.[0-9]{1,2})|(RG_[1-9][0-9]*)|(UD_[0-9]+)/