我有这段代码
<html>
<head>
<title>JavaScript String replace() Method</title>
</head>
<body>
<script type="text/javascript">
var re = /(\w+)\s(\w+)/;
var str = "zara ali";
var newstr = str.replace(re, "$2, $1");
document.write(newstr);
</script>
</body>
</html>
任何人都可以解释一下这是什么以及它是如何阅读的?
var re = /(\w+)\s(\w+)/;
同样在str.replace(re, "$2,$1);
,什么是$ 2&amp; $ 1吗?
答案 0 :(得分:0)
var newstr = str.replace(re, "$2, $1");
将第二个单词替换为第一个单词,并在其间放置,
。 https://msdn.microsoft.com/en-us/library/az24scfc%28v=vs.110%29.aspx是指向正则表达式&#34;备忘单的链接。&#34;正则表达式有点令人困惑,但一旦你使它正常工作它就会非常棒。
答案 1 :(得分:0)
结帐http://regexr.com/3beap。在处理正则表达式时,该站点非常有用。如果将鼠标悬停在表达式的不同部分(蓝色条下),它会告诉您每个部分的作用。如果你有替换的不同部分(底部灰色条),它会告诉你每个部分的作用。
您还可以通过Google搜索找到许多正则表达式教程,其中涵盖了基础知识。
但是用简单的英语写下你的代码所做的是:
\w+
匹配一个或多个字母\s
匹配单个空格()
会抓取该匹配项以供日后参考并将其保存在$#中,其中#是一个以{1}开头的数字1-9
,并按捕获的顺序逐个增加因此$1
是第一个()
而$2
是第二个()
。
在您的示例中$1
为zara
而$2
为ali
$1
和$2
,然后将其替换为“$ 2,$ 1”,这将成为“ali,zara”。 我希望这会有所帮助。
答案 2 :(得分:0)
请参阅我上面发布的评论中的链接,了解正则表达式。 但是要向你解释你发布的代码实际上是什么......
var re = /(\w+)\s(\w+)/;
是正则表达式。前导{和尾随/
是分隔符,除了告诉解释器实际表达式是什么之外,实际上与替换有任何关系:(\w+)\s(\w+)
()
被称为捕获括号,并被浏览器记住,以便以后可以在替换中使用它们。第一组分配给$ 1,第二组分配给$ 2等......
\w
匹配包括下划线在内的任何字母数字字符。它相当于[A-Za-z0-9 _]
+
表示应用前一个表达式一次或多次
\s
匹配单个空白字符
所以你的表达式说看一个或多个字母数字字符的字符串"zara ali"
(记住它们作为一个组,将它们存储在$1
中),然后是一个空白字符,然后是另一组一个或多个字母数字字符(并将它们记住为一组,将它们存储在$2
中)。如果匹配,请将字符串替换为字符串"$2, $1"
,这实际上是第二个捕获组,后跟逗号和空格,以第一个捕获组结束。
所以你从:"zara ali"
开始,以"ali, zara"
答案 3 :(得分:0)
该脚本旨在使用正则表达式将"FirstName LastName"
形式的字符串转换为"LastName, FirstName"
。这条线
var re = /(\w+)\s(\w+)/;
创建正则表达式,以及它的工作原理细分,#
表示注释:
/ # open regular expression
( # open a capturing group, aliased as $1
\w # match any alphanumeric character or underscore
+ # match a single or multiple occurrences of the preceding token
) # close capturing group $1
\s # match a single space
( # open capturing group $2
\w+ # match any single or multiple alphanumeric character or underscore
) # close capturing group $2
/ # close expression
该行
var newstr = str.replace(re, "$2, $1");
将正则表达式应用于str
,提取捕获组,反转它们,并在其间添加逗号。