使用正则表达式检查字符串的有效性

时间:2011-05-01 10:20:00

标签: regex

我有一个字符串,我想确保每个'_'后跟一个大写字母。 (我需要在一个正则表达式上执行此操作) 我该怎么做? _ [A-Z]如果只找到一个是好的,但是如果我有的话,它仍会匹配:foo_Bar_bad

2 个答案:

答案 0 :(得分:3)

用相反的方式做到这一点:

/_[^A-Z]/

如果字符串包含_后跟除大写字母之外的任何内容,则匹配。如果匹配,则根据您的标准,字符串格式不正确。

perl中的示例:

$ perl -ne 'if (/_[^A-Z]/) { print "** bad\n" } else { print "** good\n"; };'
qsdkjhf
** good          # no _ at all
qdf_A
** good          # capital after _
qdsf_2
** bad           # no capital after _
qsdf__Aqs  
** bad           # the first _ is followed by another _ => not a capital
_
** bad           # end of input after _ is also rejected

答案 1 :(得分:0)

这可能有效:

(([_][A-Z])|[^_])+

它将匹配任何不是“_”的字符,当遇到下划线时,只有后跟大写字母才会匹配。