我正在尝试将电子邮件地址中的第一个字母大写。例如,john.doe@example.com
将成为John.Doe@example.com
。我有一些正则表达式会找到所有单词的第一个字母,但它包含@
之后的结果。
/(\b[a-z])/g
有没有办法在@
之前获得结果?我在ActionScript中这样做,但它非常标准。
如果必须,我可以使用split('@')
将电子邮件地址分成2个元素的数组,对第一个元素执行更改,然后将它们重新组合成一个{{1}再次。如果可以的话,我宁愿使用正则表达式来简化它。
答案 0 :(得分:1)
如果ActionScript的正则表达式实现支持前瞻语句(根据我的说法,应该如此),你可以使用正面的预测,如下所示:
/\b[a-z](?=.*@)/g
换句话说,如果文本紧跟.*@
,则只会将其视为匹配项。但是,.*@
部分不会作为匹配的一部分被捕获。
答案 1 :(得分:1)
您可以使用正则表达式检查@
是否位于当前匹配之前 - /\b[a-z](?=[^@]*@)/g
。字符类[^@]
匹配@
以外的任何字符。
这是一个演示代码:
var str1:String = "john.doe@gmail.com";
var pattern:RegExp = /\b[a-z](?=[^@]*@)/g;
var str2:String = str1.replace(pattern, replFN);
trace (str2);
function replFN():String {
return arguments[0].toUpperCase();
}