尝试使用正则表达式解决简单问题。我的输入字符串是
firstname.ab
我试图将其输出为,
Firstname AB
所以主要目的是大写字符串的第一个字母并用空格替换点。所以选择写两个正则表达式来解决。
第一个:用空格/\./g
第二个:要将第一个字母/\b\w/g
我的问题是,我们可以用一个正则表达式进行两种操作吗?
提前致谢!!
答案 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);

grp1
,grp2
和grp3
代表回调函数中的捕获组。 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">