<script type="text/javascript">
re = /(\w+)\s(\w+)/;
str = "John Smith";
newstr = str.replace(re, "$2, $1");
document.write(newstr);
</script>
是否有可能以任何方式直接进一步操纵子串匹配?例如,有没有办法在这里用一行代表史密斯这个词?我可以将$ 2中的值传递给大写并返回值的函数,然后直接在这里使用它吗?
如果不可能在一行中,是否有一个简单的解决方案可以将“John Smith”变成“SMITH,John”?
试图解决这个问题,但没有提出正确的语法。
答案 0 :(得分:3)
你应该可以做这样的事情:
newstr = str.replace(re, function(input, match1, match2) {
return match2.toUpperCase() + ', ' + match1;
})
答案 1 :(得分:1)
不,使用JavaScript的RegExp对象无法实现(单行)。 尝试:
str = "John Smith";
tokens = str.split(" ");
document.write(tokens[1].toUpperCase()+", "+tokens[0]);
输出:
SMITH, John
答案 2 :(得分:0)
您可以简单地提取匹配的子串并自行操作:
str = "John Smith";
re = /(\w+)\s(\w+)/;
results = str.match(re);
newstr = results[2].toUpperCase() + ", " + results[1];