2015-10-26 20 views
2

之前查找第一個字母我試圖在電子郵件地址中首字母大寫。例如,[email protected]將變爲[email protected]。我有一些正則表達式可以找到所有單詞的第一個字母,但它包含@之後的結果。RegExp在@

/(\b[a-z])/g 

有沒有辦法在@之前得到結果?我在ActionScript中這樣做,但它非常標準。

如果我要,我可以只使用split('@')打破了電子郵件地址成2個元素的數組,執行的第一個元素的變化,然後把他們重新走到一起成爲一個單一的string一次。如果可以的話,我寧願使用正則表達式來簡化它。

+0

一個好辦法是拆就'電子郵件@'然後使用在上半年的正則表達式,然後將兩個部分連接到一起。 – sln

回答

1

提供的ActionScript的實現正則表達式的支持前瞻聲明(其中,從我所知道的,它應該),你可以只用一個積極的前瞻,類似這樣的:

/\b[a-z](?=.*@)/g 

換句話說,如果立即跟隨.*@,文本將被視爲匹配。但是,.*@部分未作爲匹配的一部分捕獲。

+0

輝煌。那樣做了。謝謝! – Marty

1

您可以使用正則表達式來檢查@是否在當前匹配的前面 - /\b[a-z](?=[^@]*@)/g。字符分類[^@]與除@以外的任何字符匹配。

這裏是一個演示代碼:

var str1:String = "[email protected]"; 
var pattern:RegExp = /\b[a-z](?=[^@]*@)/g; 
var str2:String = str1.replace(pattern, replFN); 
trace (str2); 

function replFN():String { 
    return arguments[0].toUpperCase(); 
} 
+0

我想'[^ @]'驗證到第一個'@',其中'。*'從最後開始驗證。無論哪種方式,它不驗證一個'@'。無論哪種方式,_brilliant _... + +1 – sln

+1

爲了說明,'.'和'[^ @]'之間的區別在於'[^ @]'包含換行符,而'.'不是。 –