单个正则表达式来首字母大写并替换点

时间:2015-08-26 10:15:42

标签: javascript regex string

尝试使用正则表达式解决简单问题。我的输入字符串是

firstname.ab

我试图将其输出为,

Firstname AB

所以主要目的是大写字符串的第一个字母并用空格替换点。所以选择写两个正则表达式来解决。

第一个:用空格/\./g

替换点

第二个:要将第一个字母/\b\w/g

大写

我的问题是,我们可以用一个正则表达式进行两种操作吗?

提前致谢!!

2 个答案:

答案 0 :(得分:2)

您可以在replace

中使用回调函数



var str = 'firstname.ab';
 
var result = str.replace(/^([a-zA-Z])(.*)\.([^.]+)$/, function (match, grp1, grp2, grp3, offset, s) {
    return grp1.toUpperCase() + grp2 + " " + grp3.toUpperCase();
});
alert(result);




grp1grp2grp3代表回调函数中的捕获组。 grp1是一封主要信函([a-zA-Z])。然后我们捕获除换行符之外的任意数量的字符((.*) - 如果您有换行符,请使用[\s\S]*)。然后是我们没有捕获的字面点\.,因为我们想要用空格替换它。最后,([^.]+$)正则表达式将匹配并捕获包含1个或多个字符的所有剩余子字符串,直到结尾为止。

我们可以使用捕获组以这种方式重新构建输入字符串。

答案 1 :(得分:1)

var $input = $('#input'),
    value = $input.val(),
    value = value.split( '.' );

value[0] = value[0].charAt( 0 ).toUpperCase() + value[0].substr(1),
value[1] = value[1].toUpperCase(),
value = value.join( ' ' );

$input.val( value );

It would be much easier if you simply split the value, process the string in the array, and join them back.
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="text" value="first.ab" id="input">