2015-10-26 48 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

为了说明,'.'和'[^ @]'之间的区别在于'[^ @]'包含换行符,而'.'不是。 –