2011-05-01 73 views
3

我有一個字符串,我想確保每個'_'後面跟一個大寫字母。 (我需要在一個正則表達式中完成) 我該怎麼做? _ [AZ]是好的,如果它發現只有一個,但仍然會匹配,如果我有:foo_Bar_bad使用正則表達式檢查字符串的有效性

回答

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 
+0

除負面情況外,他仍然需要肯定的斷言檢查。允許「不失敗」並不足以取得成功。 – 2011-05-01 10:27:25

+0

@Mike:我不確定我是否理解你的觀點。你會有一個這不起作用的例子嗎? – Mat 2011-05-01 10:31:17

+0

你的正則表達式仍然通過「_2」​​,這不是大寫字母 – 2011-05-01 10:33:40

0

這可能會實現:

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

它將匹配,是不是「_」,當它遇到一個下劃線如果跟着它只會匹配任何字符由大寫字母。

相關問題