此代码
var re = /(\w+)\s(\w+)/;
var str = "John Smith";
var newstr = str.replace(re, "$2, $1")
和此代码
var re = /(.+)\s(.+)/;
var str = "John Smith";
var newstr = str.replace(re, "$2, $1")
做同样的事情。
.
(点)和\w
元字符之间是否存在任何关键差异?
答案 0 :(得分:6)
一个点匹配除换行符之外的每个字符,
\w
匹配所有字母数字字符和下划线(在JavaScript中)。
所以,.
= [^\n\r]
和\w
= [a-zA-Z0-9_]
。
如果你想要一个与每个角色相匹配的文字,请使用:
[\S\s]
(所有非空格(\S
)和空格(\s
)字符=所有字符)[\D\d]
(所有非数字(\D
)和所有数字(\d
)字符=所有字符)[\W\w]
(所有非单词字符和所有单词字符=所有字符)有关详细信息,请参阅MDN: Regular expressions。
答案 1 :(得分:2)
.
匹配任何非换行符。
\w
匹配字符,即相当于[A-Za-z0-9_]
。
使用\w
似乎是正确的方法,但在处理名称时可能会有点错误,如下所示:
var str = "Hans-Kristian Whistler";
var re = /(\w+)\s(\w+)/;
var newstr = str.replace(re, "$2, $1");
// result: Hans-Whistler, Kristian
var re = /(.+)\s(.+)/;
var newstr = str.replace(re, "$2, $1");
// result: Whistler, Hans-Kristian
答案 2 :(得分:1)
\w
匹配字母数字字符和_但没有空格
var re = /(\w+)\s(\w+)/;
var str = "John Herbert Smith";
var newstr = str.replace(re, ">$2<, >$1<");
输出:
>Herbert<, >John< Smith
.
匹配除了换行符之外的所有内容
var re = /(.+)\s(.+)/;
var str = "John Herbert Smith";
var newstr = str.replace(re, ">$2<, >$1<");
输出
>Smith<, >John Herbert<
答案 3 :(得分:0)
答案 4 :(得分:0)