Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/466.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript使用replace()替换字符_Javascript_Regex_Replace - Fatal编程技术网

Javascript使用replace()替换字符

Javascript使用replace()替换字符,javascript,regex,replace,Javascript,Regex,Replace,我有这段代码 <html> <head> <title>JavaScript String replace() Method</title> </head> <body> <script type="text/javascript"> var re = /(\w+)\s(\w+)/; var str = "zara ali";

我有这段代码

    <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>
同样在str.replace中,$2,$1,什么是2美元和1美元

 var newstr = str.replace(re, "$2, $1");
将第二个单词替换为第一个单词,并在两者之间放置一个。是指向正则表达式备忘单的链接。Regex有点让人困惑,但一旦你让它正常工作,它会非常棒。

请查看。该网站在处理正则表达式时非常有用。如果将鼠标悬停在蓝色条下表达式的不同部分上,它将告诉您每个部分的作用。如果你有底部灰色条的不同部分,它会告诉你每个部分的功能

也有许多正则表达式教程,你可以通过谷歌搜索找到,涵盖了基础知识

但用简单的英语来说,你的代码的作用是:

\w+匹配一个或多个字母 \s匹配单个空格 捕获匹配项以供以后参考,并将其保存在$中,其中是数字1-9,从1开始,按捕获顺序递增 所以1美元是第一个,2美元是第二个

在你的例子中,1美元是zara,2美元是ali

在replace中,您所做的就是匹配正则表达式,将输出捕获为$1和$2,然后将其替换为$2,$1,这将成为ali,zara。
我希望这能有所帮助。

参考我在上面发表的评论中的链接,了解正则表达式。 但是为了向你解释你发布的代码实际上做了什么

变量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

脚本旨在使用正则表达式将格式为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,提取捕获组,反转它们,并在它们之间添加逗号。

查找正则表达式教程。您在该变量re中看到的是正则表达式。一个简单的谷歌搜索应该会告诉你很多。明白了,它们是常规表达式的特殊字符。谢谢你们
var newstr = str.replace(re, "$2, $1");