我需要构建一个正则表达式,它可以检测所有以下字符串,只有那些。
// '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]+/
所以我遇到的问题并不是我需要正则表达式来单独找到字符串,但我需要一个可以捕获所有上述情况的正则表达式。我不知道是否有可能,但我想事先感谢所有愿意尝试的人!
答案 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]+)/