RegExp在@

时间:2015-10-26 19:20:38

标签: regex actionscript-3

我正在尝试将电子邮件地址中的第一个字母大写。例如,john.doe@example.com将成为John.Doe@example.com。我有一些正则表达式会找到所有单词的第一个字母,但它包含@之后的结果。

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

有没有办法在@之前获得结果?我在ActionScript中这样做,但它非常标准。

如果必须,我可以使用split('@')将电子邮件地址分成2个元素的数组,对第一个元素执行更改,然后将它们重新组合成一个{{1}再次。如果可以的话,我宁愿使用正则表达式来简化它。

2 个答案:

答案 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();
}
相关问题