3
我有一個字符串,我想確保每個'_'後面跟一個大寫字母。 (我需要在一個正則表達式中完成) 我該怎麼做? _ [AZ]是好的,如果它發現只有一個,但仍然會匹配,如果我有:foo_Bar_bad使用正則表達式檢查字符串的有效性
我有一個字符串,我想確保每個'_'後面跟一個大寫字母。 (我需要在一個正則表達式中完成) 我該怎麼做? _ [AZ]是好的,如果它發現只有一個,但仍然會匹配,如果我有:foo_Bar_bad使用正則表達式檢查字符串的有效性
的東西,如周圍做它的其他方式:
/_[^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
這可能會實現:
(([_][A-Z])|[^_])+
它將匹配,是不是「_」,當它遇到一個下劃線如果跟着它只會匹配任何字符由大寫字母。
除負面情況外,他仍然需要肯定的斷言檢查。允許「不失敗」並不足以取得成功。 – 2011-05-01 10:27:25
@Mike:我不確定我是否理解你的觀點。你會有一個這不起作用的例子嗎? – Mat 2011-05-01 10:31:17
你的正則表達式仍然通過「_2」,這不是大寫字母 – 2011-05-01 10:33:40